这道还是没想明白
main(){
char x = 0xffff;
printf( "%d\n", x-- );
}
为什么运行结果是 -1
char x范围是-128 ~ 127之间,赋值0xffff编译器会自动截断高8位,变成x = 0xFF
带符号的二进制1 0 0 0 0 0 0 0为-0(负0),减1的话,高位逐个借位,变成1 1 1 1 1 1 1 1(0xFF,问题中的x值得),而-0减1等于-1 0xffff=-1。。。
x--=-1
x=-2 char 1字节 范围是-128到127
如果是 无符号char 范围就是0-255
你ff已经是-1了 超级忍者龟 发表于 2014-3-19 16:15 static/image/common/back.gif
char x范围是-128 ~ 127之间,赋值0xffff编译器会自动截断高8位,变成x = 0xFF
带符号的二进制1 0 0 0 0 0 ...
{:7_168:}给力,学习了这句话了 月光、茉莉雅 发表于 2014-3-20 17:35
给力,学习了这句话了
明白了谢谢 二楼答案最正确,只不过没给分析罢了……
页:
[1]