c++表达式类型转换过程说明

先转换类型,再计算表达式结果。(所以如果类型转换成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——

 

 

 

典型的整型溢出行为标题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值