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

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

Восстановить пароль Регистрация
 
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 61
05.07.2015, 15:07     Тернарный оператор и операторы безусловного перехода #1
Здравствуйте, может кто-нибудь объяснить, почему не компилируется оператор ?, если в одной из последующих частей стоит 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++ Альтернатива if (.) {.} (тернарный оператор)
Тернарный оператор: возврат значения 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
Сообщений: 61
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
Сообщений: 61
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++ Как работает тернарный оператор

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

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

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