Выполнял тест c++ и попалось такое задание, логично если подумать то результат должен быть False, я проверил в трех компиляторах и завис. Объясните пожалуйста, почему false? Приоритет у ! выше, но он справа налево; а у остальных операторов в данном примере приоритет ниже и слева направо.
-
Опишите в вопросе ваше логику рассуждения, почему не должно быт false? Желательно пошагово.SwaD– SwaD2024年11月14日 16:10:44 +00:00Commented 14 нояб. 2024 в 16:10
-
false не должно быть, если мы не присваиваем выражение переменной, а сразу выводим через cout. А если присваиваем, то ничего никуда не теряется и получается false.LoK-DoK– LoK-DoK2024年11月14日 16:53:16 +00:00Commented 14 нояб. 2024 в 16:53
1 ответ 1
Смотрим приоритеты...
Ну, понятно, 5>7 в скобках.
! перебивает &&. cout << (!(5 > 7)) && 2 > 3;
Сравнение перебивает && : cout << ((!(5 > 7)) && (2 > 3);
Оператор << перебивает &&: (cout << ((!(5 > 7))) && (2 > 3);
Все понятно?
Вычисляем 5>7 - false, его отрицание - true, что и выводим. Ну, а результат вывода сравниваем с 2>3 и никуда его не выводим...
ответ дан 14 нояб. 2024 в 16:11
Harry
227k15 золотых знаков131 серебряный знак252 бронзовых знака
-
Спасибо, все теперь стало ясно), я не подумал что << тоже оператор.LoK-DoK– LoK-DoK2024年11月14日 16:58:52 +00:00Commented 14 нояб. 2024 в 16:58
-
@LoK-DoK, хорошо запмните -- мировой запас скобок не ограниченavp– avp2024年11月14日 17:35:22 +00:00Commented 14 нояб. 2024 в 17:35
-
Голоса от участников с репутацией менее 15 учитываются, но не меняют публично отображаемое значение рейтинга. Не хватило пару баллов) @avp запомнил)LoK-DoK– LoK-DoK2024年11月14日 18:16:16 +00:00Commented 14 нояб. 2024 в 18:16
Начните задавать вопросы и получать на них ответы
Найдите ответ на свой вопрос, задав его.
Задать вопросlang-cpp