- int i = 0;
- a = (i++) + (i++);a = (i++) + (++i);a = (++i) + (i++);a = (++i) + (++i);这四种情况结果?
复制代码 一道很经典的题,考查自加自减。之前自己也感觉很混乱,最近看了一篇分析,清楚了。
思路很简单:
1.i++,i--,这两种后缀式自增自减,先生成值,再执行运算;
2.++i,--i,这两种前缀式自增自减,先执行运算,再生成值;- a = (i++) + (i++);
- 等价于
- a = i +i;
- i = i + 1;
- i = i +1;
- 所以结果为:a = 0;
复制代码- a = (i++) + (++i);
- 等价于
- i = i + 1;
- a = i + i;
- i = i + 1;
- 所以结果为:a = 2;
复制代码- a = (++i) + (i++);
- 等价于
- i = i + 1;
- a = i + i;
- i = i + 1;
- 所以结果为:a = 2;
复制代码- a = (++i) + (++i);
- 等价于
- i = i + 1;
- i = i + 1;
- a = i + i;
- 所以结果为:a = 4;
复制代码 自减运算原理一样。
再遇到这种题,就这样分步算一下,就清楚了。
|