C++中间结果溢出

在C++中有可能因为数据的值超出了数据类型所表示的范围而造成错误地结果,下面来详细分析一下。

有如下代码:

short int a = 234;
short int b = 456;
short int c = 6;
cout << a * b / c;//结果为17784

如果short int占用2字节,int占用4字节。虽然short int为16位整数,但是由于该指令系统是32位,放在在32位的寄存器中进行计算,这样中间的结果234*456=106704不会溢出,最后的结果也是正确的。

如果上述的生成的指令是16位的机器代码,在16位的机器上进行运算,当计算234*456时,将会抛弃16位上的1,这样即使a、b和c为int类型,但是由于16位的编译器的int为16位,所以仍然会抛弃16位上的1,造成数据不准确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值