##关于 C语言的整型提升
-
什么是整型提升?
C的算术运算是需要表达式中的字符和短整型操作数均为整型,如果不是,需要在使用之前将其转换为普通整型,这种转换就称为整型提升。 -
为什么要进行整型提升?
CPU内整型运算器的操作数的字节长度一般等于int的字节长度,而表达式的整型运算是在CPU的相应运算器件内进行的。 -
如何进行整型提升?
整型提升时按照变量的数据类型的符号位来提升。
①正数的整型提升
char a=1;
char在内存中占1个字节,即8个比特位。
00000001
整型提升时,要将其转换为4个字节的int型,32个比特位。
所以除去char本身的8个比特位,其余高位的比特位补充符号位,即为0
00000000000000000000000000000001
②负数的整型提升
与正数相同,但符号位是1,所以高位补充符号位1
eg.
char a=-1
二进制表示为:11111111
提升之后为:11111111111111111111111111111111 -
实际使用中,只有参与表达式运算,就会发生整型提升