Freigeben über


Bedingter Operator: ? :

expression ? expression : expression

Hinweise

Der bedingte Operator (? : (ternärer) ist ein Operator geht es drei Operanden).Der bedingte Operator funktioniert wie folgt:

  • Der erste Operand wird implizit in boolkonvertiert.Es wird ausgewertet, und alle Nebeneffekte werden abgeschlossen, bevor sie fortgesetzt wird.

  • Wenn der erste Operand zu true (1) ergibt, wird der zweite Operand ausgewertet.

  • Wenn der erste Operand zu false (0) ergibt, wird der dritte Operand ausgewertet.

Das Ergebnis des bedingten Operators ist das Ergebnis der Operanden ausgewertet wird, das zweite und das dritte.Nur einer der letzten zwei Operanden wird in einen bedingten Ausdruck ausgewertet.

Bedingte Ausdrücke besitzen Assoziativität von rechts nach links.Der erste Operand muss den vom Zeigertyp oder ganzzahlig sein.Die folgenden Regeln gelten für die zweite und dritte Ausdrücke:

  • Wenn beide Ausdrücke vom selben Typ sind, ist das Ergebnis von diesem Typ.

  • Wenn beide Ausdrücke aus der arithmetischen Operatoren oder Enumerationstypen sind, werden die üblichen arithmetische Konvertierungen (abgedeckt in Arithmetische Konvertierungen) ausgeführt, um sie zu einem allgemeinen Typ zu konvertieren.

  • Wenn beide Ausdrücke von Zeigertypen ist, oder, falls ein Zeigertyp ist, und ein weiteres, konstanter Ausdruck ist, der bis 0 ausgewertet wird, werden Zeiger konvertierungen ausgeführt, um sie zu einem allgemeinen Typ zu konvertieren.

  • Wenn beide Ausdrücke von Verweistypen sind, werden Verweise konvertierungen ausgeführt, um sie zu einem allgemeinen Typ zu konvertieren.

  • Wenn beide Ausdrücke vom Typ void sind, ist der allgemeine Typ " void " - Typ.

  • Wenn beide Ausdrücke aus einem angegebenen Klassentyp handelt, ist der allgemeine Typ dieser Klassentyp.

Alle Kombinationen von zweiten und dritten Operanden nicht in der obigen Liste sind ungültig.Der Typ des Ergebnisses ist der allgemeine Typ, und es ist ein L-Wert sein, wenn die zweiten und dritten Operanden vom selben Typ sind und beide L-Werte sind.

Beispiel

// 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;
}

Siehe auch

Referenz

C++-Operatoren

Operatorrangfolge und Assoziativität

Konzepte

Operator des bedingten Ausdrucks