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 и никуда его не выводим...