cout << !(5 > 7) && 2 > 3; True or false?

Выполнял тест c++ и попалось такое задание, логично если подумать то результат должен быть False, я проверил в трех компиляторах и завис. Объясните пожалуйста, почему false? Приоритет у ! выше, но он справа налево; а у остальных операторов в данном примере приоритет ниже и слева направо.


Ответы (1 шт):

Автор решения: Harry

Смотрим приоритеты...

Ну, понятно, 5>7 в скобках.
! перебивает &&. cout << (!(5 > 7)) && 2 > 3;
Сравнение перебивает && : cout << ((!(5 > 7)) && (2 > 3);
Оператор << перебивает &&: (cout << ((!(5 > 7))) && (2 > 3);

Все понятно?

Вычисляем 5>7 - false, его отрицание - true, что и выводим. Ну, а результат вывода сравниваем с 2>3 и никуда его не выводим...

→ Ссылка