2

cond && cond op cond

op可以是&&||

Qn- 对于短路 ( &&) 运算符,如果第一个条件为假,则不评估右侧部分(整体)或不评估之后的第二个&&条件

另外为什么以下两个表达式的结果不同?

(2 > 3 && 5 < 2 || 3 > 2)=>True

(2 > 3 && 5 < 2 | 3 > 2) =>False

我们不能在一个表达式中使用短路运算符和标准运算符吗...?

4

2 回答 2

3

结果是不同的,因为||| 有不同的优先级

具体来说,|的优先级高于&&,而||的优先级低于&&

          System.out.println(2 > 3 && 5 < 2 || 3 > 2);    // true
          System.out.println(2 > 3 && 5 < 2 | 3 > 2);     // false
          System.out.println(2 > 3 && (5 < 2 | 3 > 2));   // false
          System.out.println((2 > 3 && 5 < 2) | (3 > 2)); // true
于 2012-12-11T20:07:09.027 回答
1

您的结果不同,因为您的第二种情况使用 | 而不是||。| 是按位或,与逻辑或不同。

现在您说短路表达式与标准表达式,但在许多语言中,短路表达式是评估逻辑表达式的默认(或唯一方式)。

如果“标准”指的是 & 或 | 之类的按位运算符,那么您可以将它们与逻辑运算符混合并匹配,尽管结果可能不是您所期望的。

于 2012-12-11T19:59:44.067 回答