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

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

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

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

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

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

Тернарный оператор - C++
Добрый день, как доказать, что нету тенарного оператора ? Я как понимаю, есть только тенарная операция, которая представляет...

Тернарный оператор vs if/else - C++
Зачем? Ведь, так элегантнее. Начало http://www.cyberforum.ru/cpp-beginners/thread718192.html

Альтернатива if (.) {.} (тернарный оператор) - C++
блин запамятовал как это делается пишут вместо стандартной формы что то типа y < x : x = m напомните плиз как это называется, какие там...

Засунуть в тернарный оператор - C++
Помогите засунуть выражение if ( (i < 0 || j < 0) || (i >= ROW || j >= COL) || (i == oi && j == oj)) continue; else if (arr)...

Как работает тернарный оператор - C++
Здравствуйте. Объясните, пожалуйста, что значит эта строка color = (color == 'W') ? 'B' : 'W';

Тернарный оператор: возврат значения - C++
Приветствую. При компиляции ниже приведенного кода bool MyFunc() { bool flag = false; // .... некоторые действия // .......

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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.
0
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 67
05.07.2015, 15:22  [ТС] #3
Я понимаю, но интересно, почему ? не работает со switch continue break, этот код просто для примера
0
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 он вообще никак не связан.
0
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 67
05.07.2015, 15:35  [ТС] #5
То есть с void-функциями он тоже не будет работать?
0
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
05.07.2015, 15:39 #6
Цитата Сообщение от Unsigned Посмотреть сообщение
То есть с void-функциями он тоже не будет работать?
Будет.
1
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
05.07.2015, 16:37 #7
Цитата Сообщение от Unsigned Посмотреть сообщение
почему не компилируется оператор ?, если в одной из последующих частей стоит break, return, continue???
Потому что по стандарту второй и третий операнды должны быть выражениями, причем одинакового типа. (По поводу типов допускаются некоторые нюансы.)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2015, 16:37
Привет! Вот еще темы с ответами:

Шахматы(заменить тернарный оператор) на if else - C++
#include <iostream> #include <Windows.h> using namespace std; void main() { int h, w, i, j; cout << "Введите...

Тернарный оператор и множество ошибок в коде - C++
Вот задание: И простой код: #include<iostream> using namespace std; int main() { int n,k; cin>>n; ...

Простая задачка про тернарный оператор - C++
Переписал с учебника простую задачку, однако на 10 и 12 строке показывает ошибки. Что тут не так? #include<iostream> #include<cmath> ...

Является ли тернарный оператор оператором сравнения? - C++
Является ли тернарный оператор оператором сравнения? Подскажите пожалуста


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.07.2015, 16:37
Ответ Создать тему
Опции темы

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