为什么i=3; (++i)+(++i)+(++i)=18?

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:56:03
用Tuboc v2.0运行,就是18!

这是关于C语言语法的一个问题,亦既预算符号的优先级;因为(++i)中的"++"符号位于变量的左边,他的优先级高于加法运算符号,因此这个运算式相当于i变量先执行三次自加,然后再执行算式中的加法运算;而i的初始值是3,自加了三次就等于6,而后三个6相加也就等于18!
以前听老师讲过着还与语言设置有关,具体请查阅资料

因为++i在计算整个表达式之前执行,先三次增加1,然后在相加,相当于:
i=3;
i=i+1;
i=i+1;
i=i+1;
i+i+i当然就是18了

16的结果是6+5+5=16
15的结果是6+5+4=15
18的结果是6+6=6=18
最后i都是6
第一种是VC编译器的结果,不同的编译器有不同的优先方式,所以答案是不确定的
标准C应该是16

绝对等于15。这种问题楼主自己些个小程序试验一下就ok了呀!!
或者单步观察一下!

(++i)+(++i)+(++i)=16
(++i)时i=4,再(++i)时i=5,这时(i) + (i) = 10
第三个(++i)时i=6
所以最后得16, 因为加法是左结合的

咋看咋像15
第一个i++为4
第二个i++为5
第三个i++为6
4+5+6=15