Логическое IF одинаковы ли значения?
- Войдите на сайт для отправки комментариев
Пнд, 02/10/2017 - 19:06
Доброе время всем! Что-то задумался я над выражением в своем коде и решил уточнить у гуру. Есть такое логическое выражение:
if ((A == true) && (B == true)) {
}
if (A == true && B == true) {
}
Будут ли эти два выражения одинаковыми для компилятора? Или есть какая-то разница?
Вопрос в количестве скобок - влияет ли это на алгоритм сравнения?
Скобки повышают читаемость человеком, уменьшают возможность ошибки в сложных условиях. А так - выражения одинаковые, можно даже сократить до if ( A && B ) { ... }
Вопрос в количестве скобок - влияет ли это на алгоритм сравнения?
Логические операции - точно так же как операции сложения или умножения - имеют свой уровень приоритета. Вас же не удивляет, что следующие две записи равнозначны:
(a * b) + (c/d)
a*b + c/d
В то же время в выражении a * (c+d) скобки обязательны, правильно?
В рассмотренном вами примере
(A == true && B == true)
оператор '==' имеет более высокий приоритет, чем '&&', поэтому скобки необязательны. Однако, в большинстве случаев скобки стоит ставить, чтобы не ошибится в выражении, если не знаете или забыли приоритет операторов.
if ((A == true) && (B == true)) {}
if (A == true && B == true) {}
В первом случае приоритет задаёт программист, а во втором - определяет компилятор.