y > 1)? " />
Verkettete logische Operatoren: Auswertung von (4 > y > 1) in C
Die Aussage (4 > y > 1) in C mag logisch erscheinen, aber seine Auswertung folgt einer bestimmten Reihenfolge der Operationen.
Parsing und Reihenfolge von Auswertung
Die Anweisung wird als ((4 > y) > 1) analysiert. Der Ausdruck 4 > gibt 0 zurück, wenn wahr, und 1, wenn falsch. Dieses Ergebnis wird dann mit 1 verglichen.
Ergebnis Auswertung
Da 0 oder 1 nie größer als 1 ist, gibt die gesamte Anweisung immer „false“ zurück. Eine Ausnahme tritt jedoch auf, wenn y ein Objekt einer Klasse ist, bei der der >-Operator überladen ist In solchen Fällen bestimmt das Verhalten des überlasteten Bedieners das Ergebnis.
Überlastung Ausnahme
Bedenken Sie den folgenden Codeausschnitt:
class mytype{}; mytype operator>(int x, const mytype &y) { return mytype(); } int main() { mytype y; cout << (4 > y > 1) << endl; return 0; }
In diesem Beispiel, in dem y von der Klasse mytype ist und der >-Operator überladen ist, schlägt die Kompilierung des Codes fehl.
Das obige ist der detaillierte Inhalt vonWie wertet C verkettete Vergleichsoperatoren wie (4 > y > 1) aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!