Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 63
#1

Тернарный оператор и операторы безусловного перехода - C++

05.07.2015, 15:07. Просмотров 428. Ответов 6
Метки нет (Все метки)

Здравствуйте, может кто-нибудь объяснить, почему не компилируется оператор ?, если в одной из последующих частей стоит break, return, continue??? Например,
C++
1
    hWnd != 0 ? ShowWindow(hWnd, nCmdShow): return 0;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2015, 15:07     Тернарный оператор и операторы безусловного перехода
Посмотрите здесь:

C++ Засунуть в тернарный оператор
Тернарный оператор vs if/else C++
C++ Шахматы(заменить тернарный оператор) на if else
Стоит ли использовать тернарный оператор, если всегда есть альтернативы в С ? C++
C++ Альтернатива if (.) {.} (тернарный оператор)
Тернарный оператор: возврат значения C++
C++ Тернарный оператор - найти ошибку в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
05.07.2015, 15:18     Тернарный оператор и операторы безусловного перехода #2
Потому что вторым и третьим параметром этого оператора должно быть выражение имеющее определенное значение:
C++
1
return hWnd != 0 ? ShowWindow(hWnd, nCmdShow): 0;
не компилял.
Если выход после ShowWindow не нужен, делай через if else.
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 63
05.07.2015, 15:22  [ТС]     Тернарный оператор и операторы безусловного перехода #3
Я понимаю, но интересно, почему ? не работает со switch continue break, этот код просто для примера
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
05.07.2015, 15:26     Тернарный оператор и операторы безусловного перехода #4
Цитата Сообщение от Unsigned Посмотреть сообщение
Я понимаю, но интересно, почему ?
Почему что именно? Вопрос был про то, почему не компилируется. Я написал уже: потому что второй и третий параметры тернарного оперетатора ожидают значения. return, break, continue это statements, которые не дают значения.
Цитата Сообщение от Unsigned Посмотреть сообщение
не работает со switch continue break,
Со switch он вообще никак не связан.
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 63
05.07.2015, 15:35  [ТС]     Тернарный оператор и операторы безусловного перехода #5
То есть с void-функциями он тоже не будет работать?
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
05.07.2015, 15:39     Тернарный оператор и операторы безусловного перехода #6
Цитата Сообщение от Unsigned Посмотреть сообщение
То есть с void-функциями он тоже не будет работать?
Будет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2015, 16:37     Тернарный оператор и операторы безусловного перехода
Еще ссылки по теме:

Простая задачка про тернарный оператор C++
Тернарный оператор и множество ошибок в коде C++
C++ Является ли тернарный оператор оператором сравнения?
C++ Как работает тернарный оператор
C++ Тернарный оператор

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3039 / 1684 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
05.07.2015, 16:37     Тернарный оператор и операторы безусловного перехода #7
Цитата Сообщение от Unsigned Посмотреть сообщение
почему не компилируется оператор ?, если в одной из последующих частей стоит break, return, continue???
Потому что по стандарту второй и третий операнды должны быть выражениями, причем одинакового типа. (По поводу типов допускаются некоторые нюансы.)
Yandex
Объявления
05.07.2015, 16:37     Тернарный оператор и операторы безусловного перехода
Ответ Создать тему
Опции темы

Текущее время: 23:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru