考试的一道题目,按理说结果应该是依赖于编译器,但是题目也没说。假定是在gcc的环境下吧。总的解题步骤是:
1.先算所有的前增量操作,即先算所有的++x。
2.再取含有x的表达式的值。
3.执行后增量操作,即算x++。
如:
int x=9,y;
y = x++ + x++;
里面有两个含有x的表达式(x++),取值是9,所以y的值就是18,x最后是11.
若 y = ++x + ++x;
则先算两次++x,x就是11,再算两个x的表达式的值,所以y就是11 + 11 = 22.
若 y = ++x + ++x + x++;
则先算两次++x,x是11,再算三个x的表达式的值,即 11+11+11=33,最后再算x++,最后x就是12.
对于--x和x--也是一样的。
如 y = --x + --x/2;
结果就是y=10,x=7.