(++i)+(++i)+(i++)求和

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:13:16
(++i)+(++i)+(i++),
当i=5时,我在电脑上运行,其和为21,为什么我自己算得的是20?
是今天省二级的题目

6+7+8=21 没错啊
++的优先级高,最主要的是右括号确定了预算顺序
由于+的运算顺序是自左向右
所以有
6+7+8
最后i为8

但是编译器不同结果会不同的,没有必要太在意

(++i)+(++i)+(i++), i=5.
----------------------
在TC编译器中:
是以整个表达式为单位来进行自增减运算的。
i=---6--7----7-----
则表达式=i+i+i=7+7+7=21.

如果在VC6中:
是以运算符所涉及的两个子式先运算的。
i=---(6---7)---------
则先按“+”运算符关联的两处两个子式先运算。再将结果作为一个子式与最后一个子式运算。
--------(7+7)--7----
则整个表达式=14+7=21.

microant837正解,
ps,楼主谁给你写的这段代码,拿锤子去敲他!!
支持哦!!

因为++运算符有副作用,破坏运算符的优先级与结合性.不同的编译系统对自增和自减计算的过程是不同的,所以结果也不同.

7+7+7=21.
i=5,
++i=6,
++i=7.
即执行7+7+7=21;
再执行i++=8;

microant837正解,
ps,楼主谁给你写的这段代码,拿锤子去敲他!!