int i=1;printf("%d",(i++)+(++i)+(i++));的结果为什么是6?

请详述i值的变化过程,我用的编译器是Dev-C++!
2025-04-14 19:58:32
推荐回答(4个)
回答1:

1+2+3=6
解释:i++ 先由i参与计算再自+;
++i 先参加计算再自+;
所以第一个括号部分是1,但是i值变为了2
第二个括号是2,但是i值变为了3
第三个括号是3,但是i值变为了4

回答2:

只有一个表达式,不是6就奇了怪了;
i++结果是2,它在这里和++i是一样的;

如果有一个成员函数来调用它,而且有其他的方法,那么就需要考虑了;

比如说压栈的指针用++i,但是弹的时候就要用i++了;

回答3:

java下调试结果是7;是1+3+3
回答者:fqking 在第二个括号应该是先++,然后取值(因为是++i,不是i++),所以第二括号出来的是3,到第三个括号先取值是3。再自加,最后i==4。

回答4:

C没学好,不懂,不过2楼的听起来有道理些