【发布时间】:2012-11-02 09:25:12
【问题描述】:
我遇到了这个问题in this website,并在 Eclipse 中尝试过,但无法理解它们是如何被评估的。
int x = 3, y = 7, z = 4;
x += x++ * x++ * x++; // gives x = 63
System.out.println(x);
y = y * y++;
System.out.println(y); // gives y = 49
z = z++ + z;
System.out.println(z); // gives z = 9
根据网站上的评论,x += x++ * x++ * x++ 解析为 x = x+((x+2)*(x+1)*x),事实证明这是真的。我想我错过了关于这个运算符优先级的一些东西。
【问题讨论】:
-
x += 3 * 4 * 5; = 3 + 60 = 63;y = 7 * 7 = 49,z = 4 + 5 = 9 -
为什么这个问题被选为 C++ 问题的副本?
-
(我同意 NullUserException - C/C++ 有不同 规则来处理相同的结构,但它恰好在 Java 下定义良好,如果不是丑陋的话。 )
标签: java operator-precedence post-increment