对于此表达式,
((a == b && b == c) && (a == b || b == c || a == c))
像这样写是否合法
(a == b && b == c && a == b || b == c || a == c)?
我想将第一组与第二组进行比较。
[a
,b
和c
是整数:
private int a;
private int b;
private int c;
这是合法的,但含义不同。
由于&&
的优先级高于||
,并且运算符从左到右关联,所以第二个示例被解析为
((a == b && b == c) && a == b) || b == c || a == c
AND(&&)运算符的优先级高于OR(||)运算符。这意味着
将在表达式的前一半之后计算。之后,将计算或运算符。因此,是的,在您的情况下是合法的,但会返回不同的答案。
不,不是。 &&
是关联的:A && B && C
与A && (B && C)
和(A && B) && C
相同,并且||
也是:A || B || C
与A || (B || C)
和(A || B) || C
相同。
但是,当涉及到两个不同的操作时,它不起作用:(A && B) || C
与A && (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)