【发布时间】:2013-04-27 22:13:56
【问题描述】:
以下代码中的可疑结果:
public static void main (String[] args)
{
int i = 2;
i = i+=2 + i++;
System.out.println(i); }
期望 8 作为输出,因为 'i+=2' 应该 更新 i,但它的行为并非如此。
输出:6
我推断简写赋值运算符按预期返回 4,但没有更新变量 i 中的相同值。任何解释将不胜感激。
【问题讨论】:
-
这是 C/C++ 中未定义的行为。有充分的理由。你不应该在任何地方这样做。
-
@JanDvorak 当然,但在 Java 中它是定义的,虽然你不应该在实践中这样做,但这是一个有趣的学术问题。
-
@berry120:感谢贝里爵士的精通解释。 :)
标签: java assignment-operator unary-operator binary-operators