整型提升是指在某些情况下c/c++程序编译器会将一些小型的整数表达式转化成较大类型的整数表达式。但是并不影响最后的输出结果的类型。比如
char c=‘a’;(a的ASCLL码值为97)
int i=100;
float j=3.14;
int result=c+i+j;
在程序开始运行时,先计算c+i的值,但是c和i的类型不同,因为int 的优先级高于c,所以把c的类型先转化成int。即c+i=97+100=197 (int)
之后将c+i的运算结果提升为float类型(float类型优先级高于int)。此时197+3.14=200.14
将最终结果带入int result中,最终的输出结果是200(result的类型已经被定义成int的了,所以只输出整数部分。)
总结:其实就是将小类型转换成大类型进行数学运算,但是最终的结果由对结果的定义类型来决定,换算过程不对结果类型造成影响。
附:
long double
double
float
unsigned long int
long int
unsigned int
int
优先级从第一行开始逐渐降低,整型提升的时候都是往高类型的走,其中
unsigned long int
和
long int
的优先级是相同的。