Condividi tramite


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

Operatori di C++

Precedenza e associatività di operatore

Concetti

Operatore di Espressione condizionale