Задать вопрос
19 февраля, 18:24

C++

Почему не работает выражение

a==0? break:continue; ? (внутри цикла)

+2
Ответы (1)
  1. 19 февраля, 20:25
    0
    Тернарный оператор должен возвращать значение (или ссылку на переменную), которое потом можно использовать. Например, если в целочисленной переменной 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;

    };
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «C++ Почему не работает выражение a==0? break:continue; ? (внутри цикла) ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы