2

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

задан 14 нояб. 2024 в 16:03
2
  • Опишите в вопросе ваше логику рассуждения, почему не должно быт false? Желательно пошагово. Commented 14 нояб. 2024 в 16:10
  • false не должно быть, если мы не присваиваем выражение переменной, а сразу выводим через cout. А если присваиваем, то ничего никуда не теряется и получается false. Commented 14 нояб. 2024 в 16:53

1 ответ 1

7

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

Ну, понятно, 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
3
  • Спасибо, все теперь стало ясно), я не подумал что << тоже оператор. Commented 14 нояб. 2024 в 16:58
  • @LoK-DoK, хорошо запмните -- мировой запас скобок не ограничен Commented 14 нояб. 2024 в 17:35
  • Голоса от участников с репутацией менее 15 учитываются, но не меняют публично отображаемое значение рейтинга. Не хватило пару баллов) @avp запомнил) Commented 14 нояб. 2024 в 18:16

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.