В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
1delicious1apple
1delicious1apple
22.07.2020 07:26 •  Информатика

C++ почему не работает выражение a==0 ? break: continue; (внутри цикла)

Ответ:
BANDOLEROS
BANDOLEROS
08.10.2020 20:59
Тернарный оператор должен возвращать значение (или ссылку на переменную), которое потом можно использовать. Например, если в целочисленной переменной a записано число -3, то используя такой синтаксис:
int absa = a >= 0 ? a : -a;
можно присвоить переменной absa значение |-3| = 3.

Выражения break, continue (и, например, return) управляют выполнением программы, показывая, какую инструкцию выполнять следующей, и не возвращают никакого значения (даже void). Поэтому при попытке использовать такие выражения в качестве аргументов тернарного оператора, ожидающего, что оба аргумента вернут какое-то значение, возникает ошибка компиляции.

Если очень хочется использовать тернарный оператор для выхода из цикла (но зачем?) можно выбрасывать исключение, которое потом обрабатывать, например, так:
try {
    int a = 5;
    while(true) {
        a == 0 ? throw "a equals 0" : (void) 0;
        a--;
    }
} catch (char const* s) {
    if (s != "a equals 0") throw s;
};
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?