Логическое IF одинаковы ли значения?

Dr_grizzly
Dr_grizzly аватар
Offline
Зарегистрирован: 07.12.2015

Доброе время всем! Что-то задумался я над выражением в своем коде и решил уточнить у гуру. Есть такое логическое выражение:

if  ((A == true) && (B == true)) {

}

if  (A == true && B == true) {

}

Будут ли эти два выражения одинаковыми для компилятора? Или есть какая-то разница?

Вопрос в количестве скобок - влияет ли это на алгоритм сравнения?

negavoid
Offline
Зарегистрирован: 09.07.2016

Скобки повышают читаемость человеком, уменьшают возможность ошибки в сложных условиях. А так - выражения одинаковые, можно даже сократить до if ( A && B ) { ... }

b707
Offline
Зарегистрирован: 26.05.2017

Dr_grizzly пишет:

Вопрос в количестве скобок - влияет ли это на алгоритм сравнения?

Логические операции - точно так же как операции сложения или умножения - имеют свой уровень приоритета.  Вас же не удивляет, что следующие две записи равнозначны:

(a * b) + (c/d)

a*b + c/d

 

В то же время в выражении a * (c+d) скобки обязательны, правильно?

В рассмотренном вами примере

(A == true && B == true)

оператор '==' имеет более высокий приоритет, чем '&&', поэтому скобки необязательны. Однако, в большинстве случаев скобки стоит ставить, чтобы не ошибится в выражении, если не знаете или забыли приоритет операторов.

 

arduinec
Offline
Зарегистрирован: 01.09.2015

Dr_grizzly пишет:

if  ((A == true) && (B == true)) {}

if  (A == true && B == true) {}

В первом случае приоритет задаёт программист, а во втором - определяет компилятор.