“第二十二天” 整型提升,数据截断

整型提升和数据截断,数据截断是在存储时发生的。

对于这个程序,a,b打印都时满足预期的,但c并没有,这就和整型在内存中的存储方式有关。

这里打印的时候,编译器会提醒,打印类型和转换说明不一致,实际上这里 i+j 得到的数值 是无符号整型存储的(计算时类型转换,整型要转化为无符号整型,再进行运算,所以最后是两个无符号整型相加,最后的结果也是整型),但是再编译器在读取 i+j 的值的时候,由于转换说明是整型,所以会将 i+j 的值解读成整型,所以这里才会提醒,类型不一致。

对于整型来说,好像由于其大小足够存储整数,所以在整数计算上不会有整数的提升和截断,

这里无符号的作用好像并没有很明显的体现,因为没有截断后的提升的话,存储的数据一般貌似是不会变的,而最后如何理解打印,则是转换说明决定的。

但对于字符型的运算,有无符号好像影响就比较大,目前感觉主要体现在,对字符型赋值时的截断(这里主要是字符型的原因,只能保留八位)和参与运算时需要进行的整型提升(这里和是否为有无符号位关系比较大,因为无符号位的话,高位都是补 0 .)

对于下面的几个程序,可自行分析,第一三个是死循环,第二个打印的不是1000.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值