【发布时间】:2014-05-13 00:15:11
【问题描述】:
int it=9, at=9;
if(it>4 || ++at>10 && it>0)
{
System.out.print("stuff");
}
System.out.print(at);
打印出 stuff9,我想知道为什么我认为 ++at>10 && it>0 会首先被评估,从而使 at = 10。
【问题讨论】:
-
除了变量名,这是个好问题。我不明白为什么它被否决了。
-
@mikeyaworski - 对于 OP 的要求,“先行”并不是完全正确的术语。而这一切都包含在任何半体面的 Java 教科书或教程中。
-
@StephenC 很多问题都可以在一本书或教程中得到解答。他使用了 and 之前 or 的知识,但没有意识到短路会导致意外输出。我认为这是一个公平的调查,无论短路是否在书中。有了这些知识,人们可能仍然会想他的想法。
-
@mikeyaworski - 现在>>你更高的优先级。但无论如何,我只是在解释为什么有些人会认为这是一个糟糕的问题。
-
@StephenC 感谢您的更正,虽然我不明白为什么“precede”不正确。不过,这不是拒绝投票的好理由,但我知道你只是在指出这一点。