L'operatore condizionale: ? :
expression ? expression : expression
Note
l'operatore condizionale (? :) è un operatore ternario (accetta tre operandi).L'operatore condizionale funziona come segue:
Il primo operando viene convertito in modo implicito in bool.Viene valutato e tutti gli effetti collaterali vengono completati prima di continuare.
Se il primo operando restituisce true (1), il secondo operando viene valutato.
Se il primo operando restituisce false (0), il terzo operando viene valutato.
Il risultato dell'operatore condizionale è il risultato di uno degli operandi viene valutato al secondo e il terzo.Solo uno dei due operandi viene valutato in un'espressione condizionale.
Le espressioni condizionali hanno un'associatività da destra a sinistra.Il primo operando deve essere dell'integrale o di tipo puntatore.Le regole seguenti si applicano alla seconda e la terza espressioni:
Se entrambe le espressioni sono dello stesso tipo, il risultato è del tipo.
Se entrambe le espressioni sono aritmetici o tipi di enumerazione, le conversioni aritmetiche normali (descritte in conversioni aritmetiche) vengono eseguite per convertirli in un tipo comune.
Se entrambe le espressioni sono di tipo di puntatore o se uno è un tipo di puntatore e l'altro è un'espressione costante che restituisce 0, le conversioni del puntatore vengono eseguite per convertirele a un tipo comune.
Se entrambe le espressioni sono tipi di riferimento, le conversioni dei riferimenti vengono eseguite per convertirele a un tipo comune.
Se entrambe le espressioni sono di tipo void, il tipo più comune è void del tipo.
Se entrambe le espressioni sono di un tipo specifico della classe, il tipo più comune è il tipo della classe.
Tutte le combinazioni del secondo e terzo operandi non nell'elenco precedente non sono valide.Il tipo del risultato è il tipo più comune ed è un l-value se sia i secondi che sono separati sono dello stesso tipo e entrambi sono valori l-value solo.
Esempio
// 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;
}
Vedere anche
Riferimenti
Precedenza e associatività di operatore