Могу ли я расширить условное выражение в C

#c #conditional-statements

#c #условные операторы

Вопрос:

Могу ли я создать условное выражение с несколькими другими, если:

Случайное условие:

 int number = 50;
if (number > 23) cout << "The variable number is greater then 23 " << endl;
else cout << "23 is greater then variable number"  << endl;
  

Условное выражение:

  int number = 50;
 cout << (number > 23 ? "The variable number is greater then 23 " : "23 is greater then variable number")<< endl;
 
  

Можно ли добавить больше «else if» в этом втором случае или можно добавить только одно условие, состоящее из «if и else»

Ответ №1:

Подобно an else if , вы могли бы просто использовать случай else другим условным:

 condition1 ? val1 :
condition2 ? val2 :
condition3 ? val3 :
val4
  

что эквивалентно

 if (condition1)
    val1
else if (condition2)
    val2
else if (condition3)
    val3
else
    val4
  

Ответ №2:

Нет, нет способа иметь else-if во встроенном условном (‘?:’ синтаксисе). Возможно, вы могли бы подойти к этому с помощью вложенных ‘?: s’ со скобками, но это было бы некрасиво.

Редактировать: глядя на другой ответ, я думаю, вы можете, и это не так уж и некрасиво! Но я не видел этого шаблона на практике.

Комментарии:

1. «Но я не видел этого шаблона на практике». Вероятно, вы это сделаете. Я часто видел это в разных компаниях и разных проектах.

2. Тогда, вероятно, это справедливо. Я в основном работал на Java, где, я думаю, для этого шаблона были бы необходимы круглые скобки, и в этом случае я думаю, что мой ответ остается в силе! Но вопрос был о C , и я работал только над одним крупным проектом на C .