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

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

Ответы 1

  • Тернарный оператор должен возвращать значение (или ссылку на переменную), которое потом можно использовать. Например, если в целочисленной переменной 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;};
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years