Хотя это не обычное использование для троичного оператора, это то, как вы это делаете:
( rval == 1 ) ? (expression1) :
( rval == 2 ) ? (expression2) :
( rval == 3 ) ? (expression3) : (default);
Однако, ради читабельности кода, я предлагаю вам придерживаться if
заявления.
Или еще лучше, кажется, switch
было бы еще более уместным здесь.
РЕДАКТИРОВАТЬ:
Это код, который я использовал для теста:
void foo() {};
void goo() {}
int main()
{
int x = 0;
x == 0 ? foo() : x == 1 ? goo() : foo();
}
EDIT2:
Для всех высказываний - см. Раздел 5.16
- второй и третий операнды являются выражениями;section 5.16.2
имеет дело с выражениями типа void.