为什么char换成int就不一样了?

char的我是知道的,但为什么换成int数字就变了。。我知道int的时候我这样做,只表示了1个字节的内容,还剩3个字节没弄,但为什么就是这个结果

char类型的变量保存的是有符号的整形数据

char a = 0x83;  /*0b10000011*/ 这个数据的最高位为1,作为一个有符号数,最高位是符号位,

char 在转成int的时候, 如果char类型变量的最高位为1,则补全的字节填充0xFF,反之填充0x00,

所以你的a 由一个字节的0x83转换成 int的时候,变成了 0xFFFFFF83

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-06-09
char是一个字节而且是有符号数,只要超过0x7F也就是127的数转换为int都是负数,它的值范围是-128到127。
int 是4个字节一般,超过7FFFFFFF也是负数。
第2个回答  2021-06-09
当0x83、0x03、0xFE作为有符号字符型解析时,按照8位补码解析,分别代表-125、+3、-2。当强制转换为有符号整型时,强制转换会保持数值不变,即仍为-125、+3、-2,临时变量内容分别为0xFFFF FF83、0x0000 0003、0xFFFF FFFE。
当0x83、0x03、0xFE作为有符号整型解析时,按照32位补码解析,分别代表+131、+3、+254。
相关的内容,你可以找一本计算机基础或者C语言的书,看看前面两章基础部分。
相似回答