一道C语言题,当unsigned int为65535时,int为什么是-1,char为什么是x?

如题所述

假设你的编译器int占2个字节:
65535在内存中是1111111111111111
无符号整数就是65535,有符号最高位是1表示负数,实际表示的数是符号位不变,其余取反再加1就是-1。
char是一个字节,所以只有11111111
最高位符号位,1111111表示127就是x的ASCII码。追问

11111111怎么表示是127呢?转成十进制不是255吗?

追答

看错了是-1,char也是-1。你是咋看出char是x的?

追问

书上的答案是x,但是我不知道这是怎么来的

追答

书上写错了,如果定义char ch=65535, 那ch一定是-1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-10
这是数据溢出的结果,
int有最大值,超出后进位,没地方进就变成了负值,后面的值行为加了1都进了一位,
相似回答