有一个很有意思的现象
int8_t tmp8 = 0xA8;
int16_t tmp16 = tmp8;
但是tmp16的结果却是0xFFA8,按照一般理解,强制转换不应该高位补零的吗?我用的编译软件是IAR6.3,程序是在STM32f407上跑的。
……
……
经过好几次实验后,发现给tmp8赋的值不大于0x7F的时候,高位补零,大于0x7f的时候高位补1,就变成了前面所说的那种状况了
有一个很有意思的现象
int8_t tmp8 = 0xA8;
int16_t tmp16 = tmp8;
但是tmp16的结果却是0xFFA8,按照一般理解,强制转换不应该高位补零的吗?我用的编译软件是IAR6.3,程序是在STM32f407上跑的。
……
……
经过好几次实验后,发现给tmp8赋的值不大于0x7F的时候,高位补零,大于0x7f的时候高位补1,就变成了前面所说的那种状况了