(++i)+(++i)+(++i)计算的探讨

今天在进行着代码选择题练习的时候,我忽然看到了这一题。

我左思右想,发现答案应当是(2)+(3)+(4)=9,可我仍然保有着疑惑,因此把代码放到了VS中跑了一遍,得出来的答案却是12。

而当我使用DV C++时,答案却又变成了10。

因此我发现,不同的编译器会有不同的运算方法。在解决这个问题之前,我们可以先来了解何为++i以及i++。

i++ 与 ++i 的主要区别有两个:

1、 i++ 返回原来的值,++i 返回加1后的值。

a=i++,意思则为a=4,但i++仍然=3.

2、 i++ 不能作为左值,而++i 可以。

a=++i,则a=4,++i=4。

对于DV C++,在进行加法运算时,求出了左值和右值后,求出其和,再进行下一步运算。

​ 一开始i=1,++i后,i=2;第二个++i后,i=3;在求出了第一个加号左右两边的运算数字后,编译器将他们放到了存储器之中,这俩个数的位置就是当前的位置,因此3+3=6。对于最后一个++i,i=4,因此6+4=10。

对于VS编译器,是在进行加法之前先将所有++i求出,最后一同进行加法。即++i,++i,++i全部计算得出,再进行最终的加法运算。++i,i=2。++i,i=3。++i,i=4。因此++i=4,三个++i相加因此就是4+4+4=12.

因此我得出,在一般的编写代码中,应当尽量不要采用这种计算方法从而避免带来不必要的计算错误。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值