考试的一道题目,按理说结果应该是依赖于编译器,但是题目也没说。假定是在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.
本文解析了C++中表达式求值顺序的问题,通过具体的示例讲解了前增量(++x)和后增量(x++)操作符在不同组合下的执行顺序及其对变量值的影响,并给出了在GCC编译器环境下的解题步骤。
5555

被折叠的 条评论
为什么被折叠?



