C语言题目。答案是C.不明白为什么。求解释,谢谢!

如题所述

前面定义char类型,后面直接输出整型,-1是异常,你对x进行任何加减乘除都是-1追问

哦~假如一开始就把x定义成int,那再打印出来的是-32767么?

追答

还是65535因为那是后减减,要运算一次才生效,已经输出了,又不循环所以那个等于没用。。。

追问

哦哦~懂了。谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-11
0x表示十六进制,char只有8bit,只储存ff(11111111),最高为是符号位,为1表示负数,将ff减一再取反得到1,所以结果为-1追问

为1为什么表示负数啊?还有将ff减一再取反怎么就得到1了?

追答

有符号的变量,最高位表示符号,0表示正数,1表示负数。负数在内存中以其补码表示,即将其绝对值去反后再加1。所以最高位为1时,说明是负数,减1再取反就得到绝对值

第2个回答  2014-02-11
补码知道吗追答

追问

不知道诶。。。

追答

手机上很难讲清楚

追问

好吧,不过还是谢谢您了。

相似回答