Partager via


Opérateur conditionnel : ? :

expression ? expression : expression

Notes

l'opérateur conditionnel (? :) est un opérateur conditionnel ternaire (il prend trois opérandes).L'opérateur conditionnel fonctionne comme suit :

  • Le premier opérande est converti implicitement en bool.Il est évalué et de les effets secondaires soient effectués avant de continuer.

  • Si le premier opérande correspond à true (1), le deuxième est évalué.

  • Si le premier opérande correspond à false (0), le troisième opérande est évalué.

le résultat de l'opérateur conditionnel est le résultat de n'importe quel opérande est évalué - le deuxième ou le tiers.Un seul des deux derniers opérandes est évalué dans une expression conditionnelle.

Les expressions conditionnelles ont l'associativité de droite à gauche.Le premier opérande doit être de type intégral ou de type pointeur.Les règles suivantes s'appliquent aux deuxième et troisième expressions :

  • si les deux expressions sont du même type, le résultat est de ce type.

  • Si les deux expressions sont arithmétiques ou de types é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 expressions sont des types pointeur ou s'il est un type pointeur et autre est une expression constante qui correspond à 0, les conversions de pointeur sont exécutées pour les convertir en un type commun.

  • Si les deux expressions 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 expressions sont de void de type, le type le plus courant est void de type.

  • Si les deux expressions sont d'un type donné de classe, le type le plus courant est que type de classe.

Toutes les combinaisons les deuxième et troisième opérandes 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 les deuxième et troisième opérandes sont du même type et les deux sont des valeurs lvalues.

Exemple

// expre_Expressions_with_the_Conditional_Operator.cpp
// compile with: /EHsc
// Demonstrate conditional operator
#include <iostream>
using namespace std;
int main() {
   int i = 1, j = 2;
   cout << ( i > j ? i : j ) << " is greater." << endl;
}

Voir aussi

Référence

Opérateurs C++

Priorité des opérateurs et d'associativité

Concepts

Opérateur de Expression conditionnelle