有符号的char变量被强制转换为int的时候,是怎么运算的

一个有符号的char a=0xFE, 254值超出了char的表示范围。a的值应该是未定义的。但是int(a)强制转换为整型的时候,结果又变成-2了,这该怎么解释?-2又是怎么来的?谢谢

0xfe 存放在一个字节内存中时, 二进制形式为 1111 1110
而变量a也是一个字节, a=0xfe意味着1111 1110这八个比特原样copy到a所在位置.

但是, a是有符号的, 计算机会将a中这八个比特解释为有符号数. 这个有符号数显然是负数, 因为最高位是1. 那到底是负的多少呢? 我们将八个比特取反加1看看
1) 取反, 得到 0000 0001
2) 再加1, 得到 0000 0010
所以, 结论是, 负2
温馨提示:答案为网友推荐,仅供参考
相似回答