整型提升是一个小的知识点,但是请继续学习,保持空杯心态!
前言
整型提升也是知识点繁多,但是有了下文清晰的框架,便能领悟一二。
一、整型提升是什么?
整型提升:在表达式计算时,各种整型首先要提升为int类型,如果int类型不足以表示则要提升为unsigned int类型;然后执行表达式的运算。(来源:百度百科)
人话版:将二进制位数不足4位的进行填充,达到统一位数从而方便计算的目的。
二、发生整型提升的情况
cpu一方面为了进行较快的运算,另一方面为了使能够在进行计算时不浪费自己的运算位顺带提高精度,在其内部将位数不够的“填充”成相同的位数。
百度百科关于运算器的相关描述:
运算器_百度百科 (baidu.com)https://baike.baidu.com/item/%E8%BF%90%E7%AE%97%E5%99%A8/2667320
1.字节数比int少的内置类型进行的整型提升
分别有char与short进行运算时,cpu会将其进行整型提升。
代码如下(示例):
(+a)也是一种运算,所以进行了整型提升。
short同理。
2.整型提升的规则
按照正数补0,负数补1的规则进行。
看一段代码:
由此可知,在cpu内部一定进行了其他运算使得127 + 3 = -126;
我们都知道,signed char的范围在-128 - 127之间,所以,当想要表示的值存储在一个char中会发生“截断”,先看一个正常的情况:
如此,截断的反应也没有显现出来,整型提升的反应也没有显现出来。
我们再看一个特殊的例子:
图解:
此时正确值130超过了char所表示的范围:
发生截断与整型提升原理如图:
总结
整型提升也就是隐式类型转换,与其对应的是显示类型转换。