Freigeben über


Operator für logisches ODER: ||

Syntax

logical-or-expression || logical-and-expression

Hinweise

Der logische ODER-Operator (||) gibt den booleschen Wert true zurück, wenn einer oder beide Operanden true ist. Ansonsten ist der Wert false. Die Operanden werden vor der Auswertung implizit in den Typ bool konvertiert. Das Ergebnis ist ein bool-Typ. Das logische OR weist eine Assoziativität von links nach rechts auf.

Die Operanden für den logischen ODER-Operator müssen nicht denselben Typ aufweisen, sie müssen jedoch ein boolescher, integraler oder Zeigertyp sein. Die Operanden sind im Allgemeinen relationale oder Gleichheitsausdrücke.

Der erste Operand wird vollständig ausgewertet und alle Nebeneffekte werden abgeschlossen, bevor die Auswertung des logischen OR-Ausdrucks fortgesetzt wird.

Der zweite Operand wird nur ausgewertet, wenn der erste Operand als false ausgewertet wird, da die Auswertung nicht erforderlich ist, wenn der logische ODER-Ausdruck true ist. Dies wird als Kurzschlussauswertung bezeichnet.

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

Wenn x im obigen Beispiel entweder w, y oder zentspricht, wird das zweite Argument der printf-Funktion als true ausgewertet, was dann zu einer ganzen Zahl heraufgestuft wird und der Wert 1 gedruckt wird. Andernfalls wird dies mit false ausgewertet, und der Wert 0 (null) wird ausgegeben. Sobald eine der Bedingungen mit dem Ergebnis true ausgewertet wird, wird die Auswertung beendet.

Operator-Schlüsselwort für ||

C++ gibt or als alternative Schreibweise für || an. In C wird die alternative Schreibweise als Makro im Header <iso646.h> bereitgestellt. In C++ ist die alternative Schreibweise ein Schlüsselwort; die Verwendung von <iso646.h> oder das C++-Äquivalent <ciso646> ist veraltet. In Microsoft C++ ist die Compileroption /permissive- oder /Za erforderlich, um die alternative Schreibweise zu aktivieren.

Beispiel

// expre_Logical_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate logical OR
#include <iostream>
using namespace std;
int main() {
   int a = 5, b = 10, c = 15;
   cout  << boolalpha
         << "The true expression "
         << "a < b || b > c yields "
         << (a < b || b > c) << endl
         << "The false expression "
         << "a > b || b > c yields "
         << (a > b || b > c) << endl;
}

Siehe auch

Integrierte C++-Operatoren, Rangfolge und Assoziativität
Logische C-Operatoren