我尝试将其转换为无符号并将其声明为无符号。它没有用。
#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;
}
答案 0 :(得分:7)
假设x
是int
变量,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
。