【发布时间】:2019-06-04 11:37:05
【问题描述】:
当我用一个较小的字符减去一个较大的字符时,我得到一个巨大的正数,而不是一个小得多的负数,同时将它分配给一个 long long int 变量。
如果我用“A”减去“N”,并且给它分配一个 long long 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
【问题讨论】:
-
为什么有人会在 C++ 代码中使用
printf???