Le langage C possède une paire d'opérateurs un peu exotiques qui peut être utilisée comme alternative à if - else et qui a l'avantage de pouvoir être intégrée dans une expression:
Les opérateurs conditionnels
<expr1> ? <expr2> : <expr3>* Si <expr1> fournit une valeur différente de zéro,
*
Si <expr1> fournit la valeur zéro,
alors la valeur de
<expr3> est fournie comme résultat
Exemple
La suite d'instructions
if (A>B) MAX=A; else MAX=B;peut être remplacée par:
MAX = (A > B) ? A : B;
Employés de façon irréfléchis, les opérateurs conditionnels peuvent nuire à la lisibilité d'un programme.
(N==1) ? ((N==2) ? N++ : N+=2) : (N--)
Les règles de conversion de types s'appliquent aussi aux opérateurs conditionnels ? : Ainsi, pour un entier N du type int et un rationnel F du type float, l'expression
(N>0) ? N : Fva toujours fournir un résultat du type float, n'importe si N est plus grand ou plus petit que zéro!