cond && cond op cond
op
可以是&&
或||
Qn- 对于短路 ( &&
) 运算符,如果第一个条件为假,则不评估右侧部分(整体)或不评估之后的第二个&&
条件
另外为什么以下两个表达式的结果不同?
(2 > 3 && 5 < 2 || 3 > 2)
=>True
(2 > 3 && 5 < 2 | 3 > 2)
=>False
我们不能在一个表达式中使用短路运算符和标准运算符吗...?
cond && cond op cond
op
可以是&&
或||
Qn- 对于短路 ( &&
) 运算符,如果第一个条件为假,则不评估右侧部分(整体)或不评估之后的第二个&&
条件
另外为什么以下两个表达式的结果不同?
(2 > 3 && 5 < 2 || 3 > 2)
=>True
(2 > 3 && 5 < 2 | 3 > 2)
=>False
我们不能在一个表达式中使用短路运算符和标准运算符吗...?
结果是不同的,因为|
和||
有不同的优先级。
具体来说,|
的优先级高于&&
,而||
的优先级低于&&
。
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
您的结果不同,因为您的第二种情况使用 | 而不是||。| 是按位或,与逻辑或不同。
现在您说短路表达式与标准表达式,但在许多语言中,短路表达式是评估逻辑表达式的默认(或唯一方式)。
如果“标准”指的是 & 或 | 之类的按位运算符,那么您可以将它们与逻辑运算符混合并匹配,尽管结果可能不是您所期望的。