C++问题,两个程序为什么输出结果回事不一样的?

2025-04-13 05:36:07
推荐回答(1个)
回答1:

因为b是个指向char的指针
他所指的内容是1个字节
也就是说
第一个*b的值为0xF7
第二个为0x07
但是你在输出的时候要让他扩展到4B,由于char长度不够,所以他需要向左扩展,当最高位是1时,全部扩展1,
否则为0
所以,第一个结果就是FFFFFFF7
因为F7的最高位是1,
实际上,只要从右边数第二个数>=8,前六个数肯定是F,否则肯定是0
比如
a
=
0xABCDEF87

输出为FFFFFF87
a
=
0xABCDEFA7

输出为FFFFFFA7
a
=
0xABCDEF17

输出为00000017
a
=
0xABCDEF77

输出为00000077