Приоритет логических операторов в C++
У логических операторов свой приоритет: они выполняются в фиксированном порядке, а не просто подряд слева направо.
Сначала выполняется отрицание !, затем связка
&&, затем связка ||. Этот порядок
важен, когда в одной строке стоят несколько знаков.
В следующем выражении сначала собирается правая часть, связка И. Ложь и ложь дают ложь. Эта ложь стоит справа от истины, и связка ИЛИ дает истину. Выведем результат:
std::cout << (true || false && false) << "\n";
Отрицание считается раньше связки И. Сначала ложь становится истиной. Затем эта истина сталкивается с ложью справа, и результат - ложь. Выведем его:
std::cout << (!false && false) << "\n";
Выведите результат следующего выражения:
true && false || true
Выведите результат следующего выражения:
false || !false