当我使用&&运算符比较两组表达式时,是否必须放入内部括号?

问题描述 投票:0回答:1

对于此表达式,

((a == b && b == c) && (a == b || b == c || a == c))

像这样写是否合法

(a == b && b == c && a == b || b == c || a == c)?

我想将第一组与第二组进行比较。

[abc是整数:

private int a;
private int b;
private int c;
java operator-keyword
1个回答
1
投票

这是合法的,但含义不同。

由于&&的优先级高于||,并且运算符从左到右关联,所以第二个示例被解析为

((a == b && b == c) && a == b) || b == c || a == c

0
投票

AND(&&)运算符的优先级高于OR(||)运算符。这意味着

  • a == b
  • b == c
  • a == c

将在表达式的前一半之后计算。之后,将计算或运算符。因此,是的,在您的情况下是合法的,但会返回不同的答案。


0
投票

不,不是。 &&是关联的:A && B && CA && (B && C)(A && B) && C相同,并且||也是:A || B || CA || (B || C)(A || B) || C相同。

但是,当涉及到两个不同的操作时,它不起作用:(A && B) || CA && (B || C)完全不同。此外,由于&&||的结合更紧密,因此A && B || C与前者相同,而与后者不同。

因此,

((a == b && b == c) && (a == b || b == c || a == c))

相当于

(a == b && b == c && (a == b || b == c || a == c))

但是

(a == b && b == c && a == b || b == c || a == c)

相当于完全不同的东西:

((a == b && b == c && a == b) || b == c || a == c)
© www.soinside.com 2019 - 2024. All rights reserved.