先转换类型,再计算表达式结果。(所以如果类型转换成unsigned,表达式计算结果却为负数,那结果可以参照末尾的图)
(操作数级别就是long long、long、int、short、signed char,不算unsigned、signed)
1、浮点提升——有long double全转long double,同理double、float。
2、整型提升——bool、char、unsigned char、signed char和short只要出现在表达中就立马自动转换为int。
3、符号相同——符号不变,级别转换为最高级别。
4、符号不同:
1)若有符号可以取到无符号的所有值,结果为有符号类型:(此时类型的sizeof肯定不一样)
unsigned short + int ——> int
2)否则,结果为有符号类型的无符号版本:(此时类型的sizeof大小肯定一样,如我电脑上的int、long,但既然大小一样,最大值最小值都一样,也就没区别,除非移植其他电脑)
——end——