考試的一道題目,按理說結果應該是依賴於編譯器,但是題目也沒說。假定是在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.