【发布时间】:2014-08-20 23:28:10
【问题描述】:
在下面的程序中,虽然 a 和 b 具有相同的值,但输出是“不一样”?我用谷歌搜索,发现 a 和 b 的值转换为 int。a 的新值为 -5,b 的新值为 251。我不明白它们在类型转换后如何变得如此不同? 二进制中的 a 是 11111011 而 b 是 11111011 所以当它们被类型转换为 int a应该变成-53,怎么是-5。请解释一下?
#include<stdio.h>
int main(){
char a = 0xfb;
unsigned char b = 0xfb;
printf("a = %c", a);
printf("\nb = %c", b);
if (a == b)
printf("\nSame");
else
printf("\nNot Same");
return 0;
}
【问题讨论】:
-
从哪里得到 11111011 = 117?它是 128+64+32+16+8+2+1 = 251。
-
我的错误谢谢指出。
-
不相关:首选
\n在行尾:printf("...\n", ...)。你的方式看起来很奇怪(甚至可能是错误的?)printf("\n...", ...)... 上面程序的最终输出 不是 由换行符终止(我会说它不是 line)