Cours 5.4. Opérateur conditionnel ternaire ( ? : )

En C, il existe un opérateur conditionnel ternaire ?:

La syntaxe générale de cet opérateur est :

(test) ? expressionVrai : expressionFaux ;

Cet opérateur est principalement utilisé lorsque l'on souhaite affecter des valeurs différentes en fonction du test.

// Si x est différent de 0, n vaut 10, sinon n vaut 20
n = (x != 0) ? 10 : 20;

Exemple

L'exemple ci-dessous affecte la variable a à max si a est supérieur à b, sinon, c'est la varibale b. On peut résumer cette instruction en une phrase :

La variable max contiendra la plus grande valeur entre a et b :

max = (a > b) ? a : b;

Cette instruction peut s'écrire avec un if...else :

if (a>b)
   max = a;
else
   max = b;

Exercice

Écrire un programme qui demande à l'utilisateur de saisir le nombre d'enfants. Ensuite, le programme affiche : Vous avez 7 enfants. Le mot enfant doit être au pluriel si le nombre saisi est strictement supérieur à 1.

int nbEnfants;

// Saisie le nombre d'enfants
printf ("Combien d'enfants ? ");
scanf ("%d", &nbEnfants);

// Affiche le nombre d'enfants
printf ("Vous avez %d enfant%c.\n", nbEnfants, /* COMPLETEZ ICI */ );

Astuce : le code ASCII zéro n'affiche rien. Voici l'affichage attendu :

Combien d'enfants ? 1
Vous avez 1 enfant.
Combien d'enfants ? 7
Vous avez 7 enfants.

Quiz

Qu'affiche le code suivant ?

int n = (2>3) ? 0 : 1;
putchar ('%d', n);
Vérifier Bravo ! Le test est faux, c'est la deuxième expression qui est évaluée. Essaie encore ...

Qu'affiche le code suivant ?

int n=(2<3)?0:1;
putchar ('%d', n);
Vérifier Bravo ! Le test est vrai, c'est la première expression qui est évaluée. Essaie encore ...

Quelle instruction est équivalente au code ci-dessous ?

if (x%2)
    c = 'p';
else
    c = 'i';
Vérifier Bravo ! L'opérateur affecte l'expression qui a été évaluée, il faut mettre le c= au début. Essaie encore ...

Voir aussi


Dernière mise à jour : 26/09/2021