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

513*_*sld 0 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;
}
Run Code Online (Sandbox Code Playgroud)

Pas*_*uoq 7

假设这x是一个int变量,除了2的补码平台外,所有值的printf("%d", x<0 ? -x : x)打印都x没有INT_MIN.

R ..以下建议:

printf("%u", (unsigned) (x<0 ? (-1 - x) + 1 : x);
Run Code Online (Sandbox Code Playgroud)

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

  • 使用`(unsigned)( - 1-x​​)+ 1`并将格式切换为'%u`将避免出现`INT_MIN`问题,假设`INT_MIN`的绝对值可在`unsigned`中表示. (2认同)