什么叫做整形提升:
CPU在运算时操作字长是按照整形(int)来进行运算的。依次要把参与运算的char型和short int转化成int型进行计算。
即使两个char型相加也需先转化为CPU内的标准形式,在进行计算。
1、隐式类型转换(整形提升)【针对char 、short int类型】
计算形式为char型,输出形式为格式化十进制输出形式,这就需要进行整形提升,那么如何进行提升呢?
#整形提升是按照变量数据类型的符号位来进行提升的。
在32位环境下,有2的32次方个寻址路线。因为a、b定义为char型,只占1个字节,1字节=8bit,
以符号位进行提升:
提升后,得到相加的结果,c的定义类型为char型,因此只能截取8个bit位
得到:c=10000010
但输出是以格式化十进制整形输出,因此需要对c进行提升。逻辑顺序,a和b的值相加赋给了c,因此c的内存存了a和b的和。
然而CPU都是以补码的形式进行储存的,而提升是对原码进行提升的。这块还绕了一圈。
有意思的是:整形提升是根据符号位来提升的(符号位不变)、而原反补码的转化符号位也是不变的。
得到原码:%d输出,32位全要,但第一个 1 是符号位(0正1负)
得到:c=-126