如果一个16位的正整形数,最高位为1,如果对它进行强制转化为8位有符号类型,则最高位会变成有符号位的符号位。
举个例子
uint16_t data=32765; 对应的二进制为 1000 0000 0000 0011
如果对它进行强制转化为int8_t的有符号位 最后变成 1000 0011 结果为-3,
由上可见,强制转化是考虑最高位的符号位的。
uint16_t data1=32765;
int8_t data2 =(int8_t)data;
printf("data2 =%d\n",data2 );
最后输出为-3。