如果没有C标志,是否真的无法打印带签名的号码?

时间:2015-04-27 15:52:51

标签: c

我尝试将其转换为无符号并将其声明为无符号。它没有用。

#include <stdio.h>

int main(void)
{
    int number, modulo;
    int result = 0;

    printf("Please provide an integer: ");
    scanf("%i", &number);

    while (number != 0) {
        modulo = number % 10;   
        result += modulo;
        number = number / 10;
    }

    printf("%i", result);            
    printf("The sum of the digits of provided number is %i\n", result);

    return 0;
}

2 个答案:

答案 0 :(得分:7)

假设xint变量,printf("%d", x<0 ? -x : x)打印x,而不会在2的补码平台上显示除INT_MIN以外的所有值的符号。

R ..以下建议:

printf("%u", (unsigned) (x<0 ? (-1 - x) + 1 : x);

...因为任何合理的平台都会处理INT_MIN

答案 1 :(得分:3)

#define ABS(x) (((x)<0)?(-(x)):(x))

(或正确指出,abs()中有内置的stdlib