当我将一个大字符减去一个小字符时,我得到了一个很大的正数,而不是一个很小的负数,同时又将其分配给一个很长的int变量。 >
如果我用'A'减去'N',并且给我分配了一个很长的int变量,那么结果就是18446744073709551605而不是-13。
当我在计算过程中使用abs()函数时,我正确地获取了该值,但是显然它将是正数而不是负数。那么如何正确获取价值呢?
char s[] = "ABCT";
char t[] = "PBDI";
long long int curr_diff;
for(int i=0; i<4; i++){
curr_diff = (t[i] - '0') - (s[i] - '0');
printf("Current value : %llu\n", curr_diff);
}
我的代码结果
Current value : 15
Current value : 0
Current value : 1
Current value : 18446744073709551605
预期结果
Current value : 15
Current value : 0
Current value : 1
Current value : -11
答案 0 :(得分:5)
printf("Current value : %llu\n", curr_diff);
您正在打印long long unsigned
值。使用%lld
获得正确的输出