opérateur conditionnel

L’opérateur ? : est un opérateur ternaire

expression1 ? expression2 : expression3

Si expression1 rend la valeur vraie (1) alors expression2 est évaluée et le résultat est celui d’expression2, sinon c’est l’expression3 qui est évaluée et résultat est celui d’expression3.

Exemple de calcul du maximum de a et b :

c= a<b : a : b

Sans cet opérateur il faudrait utiliser une instruction if :

if (a<b)

c=a ;

else

c=b ;

Une autre exemple :

main() {

int i, j, k, l ;

i = 5; j = 7 ;

k= i<j ? -1 : 1 ;

printf(«k = %2d\n », k) ;

k = i>j ? l = - 1 : l =1 ;

printf(«k = %2d l = %2d \n », k) ;

}

Résultat après l’exécution :

k = - 1

k = 1 l = 1

L’opérateur ternaire est de priorité très faible, pas besoin de parenthèses.

Versions complètement parenthésées équivalentes.

k= (i<j) ? (-1) : 1 ;

k = (i>j) ? (l = (- 1)) : (l =1) ;

» Glossaire du langage C