Нет, это не так. &&
является ассоциативным: 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)
(Как отмечает Каяман в комментариях, это не имеет значения в этом конкретном примере , поскольку все они могут быть уменьшены до (a == b && b == c)
, в силу специфики c предикатов, используемых в вашем примере, таким образом, пока они идентичны в этом конкретном примере вы все равно должны понимать концепции ассоциативности и приоритета, которые будут использоваться в целом.)