我只是想创建一个小小的 Java-Puzzle,但我自己也感到困惑。谜题的一部分是:
下面这段代码的作用是什么:
public class test {
public static void main(String[] args) {
int i = 1;
i += ++i + i++ + ++i;
System.out.println("i = " + i);
}
}
它输出9
.
我的(至少部分)错误的解释:
我不太确定,但我认为之后的术语i +=
得到这样的评估:
So
int i = 1;
i += ++i + i++ + ++i;
是相同的
int i = 1;
i += ((++i) + (i++)) + (++i);
这是从左到右评估的(参见增量前和增量后的java评估).
首先++i
增量i
to 2
并返回2
。所以你有了:
i = 2;
i += (2 + (i++)) + (++i);
The i++
回报2
,因为它是新值i
,和增量i
to 3
:
i = 3;
i += (2 + 2) + ++i;
第二++i
增量i
to 4
并返回4
:
i = 4;
i += (2 + 2) + 4;
所以你最终会得到12
, not 9
.
我的解释哪里有错误?正确的解释是什么?
i += ++i + i++ + ++i;
是相同的i = i + ++i + i++ + ++i;
右侧从左到右计算,得出i = 1 + 2 + 2 + 4;
(这产生i = 9
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)