整形提升:
表达式中字符和短整型操作数在使用之前转换为普通整形
分为两种:
有符号整形 提升:按照变量的数据类型的符号位来提升
无符号整形 提升:按照高位补0的方式及进行提升
例如:char a=20;char b=130;char c=a+b;求出c的值
20的二进制编码为://00000000000000000000000000010100
因为char占一个字节,所以采用截取的方式保留8位:
所以在char中20的二进制编码为://00010100
同理130为://10000010
进行相加时:如以上方式按照符号位进行提升(char是否是signed char取决于编译器)
所以20对应//00000000000000000000000000010100
130对应//11111111111111111111111110000010
按位进行相加加完后是//11111111111111111111111110010110 这是补码的形式
求出原码,符号位不变取反加一://1000000000000000000000001101010
c在char中所以截取8位为://01101010 为106,所以c的值为-106
算数转换:
讨论的是类型大于整形的的实现
向上转换:1:long double
2:double
3:float
4:unsigned long int
5:long int
6:unsigned int
7:int
例如:int a=10;float c=20;则z+c就是float类型的,要向上转换