小编hri*_*shs的帖子

为什么减去具有更大字符的较小字符会产生一个大的正整数而不是一个负整数?

当我用较小的字符减去一个较大的字符时,我得到一个巨大的正数而不是一个小得多的负数,同时将它分配给一个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)

c ascii char

0
推荐指数
1
解决办法
90
查看次数

标签 统计

ascii ×1

c ×1

char ×1