【发布时间】:2013-05-03 16:00:36
【问题描述】:
因为this post 而引起了混乱。作者更新了帖子,结果一目了然。 结论:Java 评估表达式从从左到右
关闭!
由于表达式的评估是从从右到左完成的,因此以下代码应将5 存储在j 中:
int i=2;
int j=++i+i++;
System.out.println(j);
但我得到 6 作为输出,这迫使我重新考虑 从右到左的评估思路。请在这里解释一下理论。
【问题讨论】:
-
理论是,任何写出这种表达方式的人都应该被枪杀。然而,上述证据表明,理论和实践存在差异。
-
@Hot Licks,我们不知道他不会因此而被枪杀。
-
虽然计算实际上是从左到右进行的,但当从右到左计算时,您的表达式也会得到 6!
-
参考 Tim Goodman 的回答。
-
实际上这样写代码:非常非常糟糕。充分理解
++i、i++和评估顺序的含义,足以能够理解这样的代码:好。
标签: java unary-operator expression-evaluation