整型提升是C语言或C++里的一种运算法则,它的内容是:
char, bool, short, int, unsigned char, unsigned short, unsigned int参与运算时,若有unsigned int, 则参与运算的类型就提升为unsigned int;若无unsigned int, 就都提升为int。
如:
//求表达式运算结果的类型所占的字节:
cout << sizeof('1' + false)<<endl;//4
//char+bool,俩个都提升为int型,其结果也为int型,int占4个字节,所以结果为4
//求变量的值:
short sn = -20;
unsigned int un = 10;
cout << sn + un << endl;//2^32-10
/*根据整型提升,有unsigned int,则short也提升为unsigned int,
而unsigned int的表示范围为0~2^32,又sn=-20,这时出现了数据溢出,
所以sn=-20+2^32,所以sn+un=-20+2^32+10=2^32-10*/
其中不了解数据溢出的可以看一下:数据溢出
运算法则:
1.整型提升
2.运算结果的类型以运算中类型精度高的为准。浮点型>整型
如:
cout<<5.0/2<<endl;//double/int=double,所以结果为2.5