Задать вопрос
26 мая, 06:41

C++

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

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

+3
Ответы (1)
  1. 26 мая, 07:32
    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; ? (внутри цикла) ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы