Freigeben über


Operator des bedingten Ausdrucks

C verfügt über einen ternären Operator: Operator des bedingten Ausdrucks (? :).      

Syntax

  • bedingter Ausdruck:
    Logisch-ODErAusdruck

    logisches Oder-Ausdrucks ? Ausdrucks : bedingter Ausdruck

Der Logisch-ODEr Ausdruck muss ganzzahlig, das Schwimmen oder Zeigertyp haben.Sie ist hinsichtlich ihrer Übereinstimmung bis 0 ausgewertet.Ein Sequenzpunkt folgt Logisch-ODEr Ausdruck.Auswertung der Operanden weiterhin wie folgt:

  • Wenn Logisch-ODEr Ausdruck ungleich 0 ist, wird der Ausdruck ausgewertet wird.Das Ergebnis des Auswertens des Ausdrucks ist vom Nicht-Terminal Ausdruckangegeben.(Dies bedeutet, dass Ausdruck ausgewertet wird, wenn nur Logisch-ODEr Ausdruck den Wert True hat).

  • Wenn Logisch-ODEr Ausdrucks 0 ist, bedingter Ausdruck ausgewertet wird.Das Ergebnis des Ausdrucks ist der Wert des bedingten Ausdrucks.(Dies bedeutet, dass bedingter Ausdruck ausgewertet wird, wenn nur Logisch-ODEr Ausdruck ) ist falsch.

Beachten Sie, dass entweder Ausdruck oder bedingter Ausdruck ausgewertet wird, jedoch nicht beide.

Der Typ des Ergebnisses einer bedingten Operation hängt vom Typ des Ausdrucks ab operanden Ausdrucks- oder wie folgt:

  • Wenn Ausdruck oder bedingter Ausdruck ganze Zahl oder einen Typ float (ihre Typen können unterschiedlich sein), wurde, wird der Operator die üblichen arithmetische Konvertierungen aus.Der Typ des Ergebnisses ist der Typ der Operanden nach Konvertierung.

  • Wenn Ausdruck und bedingter Ausdruck die gleiche Struktur, Union oder Zeigertyp haben, ist der Typ des Ergebnisses über die gleiche Struktur, Union oder Zeigertyp.

  • Wenn beide Operanden vom Typ voidverfügen, hat das Ergebnis vom Typ void.

  • Wenn einer der Operanden ein Zeiger auf ein Objekt beliebigen Typs und der andere Operand ein Zeiger auf voidist, wird der Zeiger auf das Objekt in einen Zeiger auf void konvertiert, und das Ergebnis ist ein Zeiger auf void.

  • Wenn entweder Ausdruck oder bedingter Ausdruck ein Zeiger ist und der andere Operand ein konstanter Ausdruck mit dem Wert 0 hat, ist der Typ des Ergebnisses der Zeigertyp.

Im Typvergleich für Zeiger, geben alle Qualifizierer (const oder volatile) im Typ, in den der Zeiger zeigt nicht relevant sind, aber der Ergebnistyp erbt die Qualifizierer beider Komponenten aus dem bedingten.

Beispiele

In den folgenden Beispielen werden Verwendung des bedingten Operator:

j = ( i < 0 ) ? ( -i ) : ( i );

In diesem Beispiel wird jden absoluten Wert von i .Wenn i kleiner als 0 ist, jwird -i zugewiesen.Wenn i größer oder gleich 0 ist, jwird i zugewiesen.

void f1( void );
void f2( void );
int x;
int y;
    .
    .
    .
( x == y ) ? ( f1() ) : ( f2() );

In diesem Beispiel werden zwei Funktionen, f1 und f2und zwei Variablen, x und y, deklariert.Später im Programm, wenn die beiden Variablen den gleichen Wert besitzen, wird die Funktion f1 aufgerufen.Andernfalls wird f2 aufgerufen.

Siehe auch

Referenz

Bedingter Operator: ? :