L’opérateur conditionnel (? :) est un opérateur ternaire (il prend trois opérandes). L’opérateur conditionnel fonctionne comme suit :
- Le premier opérande est implicitement converti en type
bool
. Il est évalué et tous les effets secondaires sont résolus avant de continuer. - Si le premier opérande prend la valeur true (1), le deuxième opérande est évalué.
- Si le premier opérande prend la valeur false (0), le troisième opérande est évalué.
Le résultat de l’opérateur conditionnel est que le résultat de tout opérande est évalué — le deuxième ou le troisième. Seul l’un des deux derniers opérandes est évalué dans une expression conditionnelle.
Les expressions conditionnelles ont une associativité de droite à gauche. Le premier opérande doit être de type intégral ou de type pointeur. Les règles suivantes s’appliquent au deuxième et au troisième opérandes :
- Si les deux opérandes sont du même type, le résultat est de ce type.
- Si les deux opérandes sont du type arithmétique ou énumération, les conversions arithmétiques classiques (traitées dans Conversions arithmétiques) sont exécutées pour les convertir en un type commun.
- Si les deux opérandes sont des types pointeur ou si l’un est de type pointeur et l’autre une expression constante qui correspond à 0, les conversions de pointeur sont exécutées pour les convertir en un type commun.
- Si les deux opérandes sont des types référence, les conversions de référence sont exécutées pour les convertir en un type commun.
- Si les deux opérandes sont de type void, le type commun est le type void.
- Si les deux opérandes sont du même type défini par l’utilisateur, le type commun correspond à ce type.
- Si les opérandes ont des types différents et qu’au moins un des opérandes a un type défini par l’utilisateur, alors les règles de langage sont utilisées pour déterminer le type commun. (Voir l’avertissement ci-dessous.)
Toutes les combinaisons des deuxième et troisième opérande qui ne sont pas dans la liste précédente ne sont pas conformes. Le type du résultat est le type commun, et c’est une l-value si le deuxième et le troisième opérande sont du même type et si les deux sont des valeurs l-value.
Poster un Commentaire
Vous devez vous connecter pour publier un commentaire.