Logische C-Operatoren

Die logischen Operatoren führen logische UND (&&) und logische OR-Vorgänge (||) aus.

Syntax

logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression

logical-OR-expression:
logical-AND-expression
logical-OR-expression || logical-AND-expression

Bemerkungen

Logische Operatoren führen keine üblichen arithmetischen Konvertierungen durch. Stattdessen bewerten sie jeden Operanden in Bezug auf seine Äquivalenz zu 0. Das Ergebnis eines logischen Vorgangs ist entweder 0 oder 1. Das Ergebnis hat den Typ int.

Die logischen C-Operatoren werden unten beschrieben:

Bediener BESCHREIBUNG
&& Der Logische UND-Operator erzeugt den Wert 1, wenn beide Operanden ungleich Nullwerte aufweisen. Wenn ein Operand gleich 0 ist, ist das Ergebnis 0. Wenn der erste Operand eines logischen UND-Vorgangs gleich 0 ist, wird der zweite Operand nicht ausgewertet.
|| Der logische OR-Operator führt einen inklusiven OR-Vorgang für seine Operanden aus. Das Ergebnis ist 0, wenn beide Operanden 0 Werte aufweisen. Wenn ein Operand einen Wert ungleich Null aufweist, ist das Ergebnis 1. Wenn der erste Operand eines logischen ODER-Vorgangs einen Wert ungleich Null aufweist, wird der zweite Operand nicht ausgewertet.

Die Operanden von logischen UND und logischen OR-Ausdrücken werden von links nach rechts ausgewertet. Wenn der Wert des ersten Operanden ausreicht, um das Ergebnis des Vorgangs zu ermitteln, wird der zweite Operand nicht ausgewertet. Dieser Effekt wird als Kurzschlussauswertung bezeichnet. Es gibt einen Sequenzpunkt nach dem ersten Operanden im Ausdruck. Weitere Informationen finden Sie unter Sequence points.

Beispiele

Die folgenden Beispiele veranschaulichen die logischen Operatoren:

int w, x, y, z;

if ( x < y && y < z )
    printf( "x is less than z\n" );

In diesem Beispiel wird die printf Funktion aufgerufen, um eine Nachricht zu drucken, wenn x sie kleiner als y und y kleiner als zist. Ist x größer als y, wird der zweite Operand (y < z) nicht ausgewertet, und nichts wird gedruckt. Es ist ein weiterer Fall einer Kurzschlussauswertung, die beim Schreiben logischer Vergleiche berücksichtigt werden muss. Andernfalls kann es Zu Problemen führen, wenn Code auf die Nebenwirkungen der Auswertung des zweiten Operanden basiert.

printf( "%d" , (x == w || x == y || x == z) );

In diesem Beispiel wird das zweite Argument der Funktion als wahr ausgewertet, und der Wert 1 wird gedruckt, wenn x das zwyzweite Argument der Funktion gleich ist.printf Andernfalls wird "false" ausgewertet, und der Wert 0 wird gedruckt. Sobald eine der Bedingungen als wahr ausgewertet wird, wird die Bewertung eingestellt.

Siehe auch