Cog*_*man 8 java operator-precedence
boolean a = true;
boolean b = true;
boolean c = false;
System.out.println(a || b && c); // true
System.out.println(b && c || a); // true
Run Code Online (Sandbox Code Playgroud)
我刚刚发现了我认为有点古怪的东西.为什么会这样,&&并且||处于不同的优先级?我原以为他们处于同一水平.以上说明了这一点.这两个陈述都是正确的,即使从左到右的评估对第一个给出错误而对第二个给出为真.
有谁知道这背后的原因?
(顺便说一下,我本来只是在这里使用了一大堆括号,但这是旧代码提出的问题)
Sne*_*tel 11
&&是乘法(x && y == x * y)||的布尔模拟,而是addition(x || y == (bool)(x + y))的布尔模拟.由于乘法具有比加法更高的优先级,因此使用相同的约定.
请注意,布尔表达式最常见的"规范"形式是一堆or-ed together和-clause,所以这与此相吻合.