当我用较小的字符减去一个较大的字符时,我得到一个巨大的正数而不是一个小得多的负数,同时将它分配给一个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);
}
Run Code Online (Sandbox Code Playgroud)
我的代码的结果
Current value : 15
Current value : 0
Current value : 1
Current value : 18446744073709551605
Run Code Online (Sandbox Code Playgroud)
预期结果
Current value : 15
Current value : 0
Current value : 1
Current value : -11
Run Code Online (Sandbox Code Playgroud)
printf("Current value : %llu\n", curr_diff);
你是打印long long unsigned价值.使用%lld得到正确的输出