Freigeben über


Logischer UND-Operator: &&

Syntax

logical-and-expression:
equality-expression
logical-and-expression && equality-expression

Hinweise

Der logische UND-Operator (&&) gibt true zurück, wenn beide Operanden true sind und andernfalls false zurückgeben. Die Operanden werden vor der Auswertung implizit in den Typ bool konvertiert. Das Ergebnis ist ein bool-Typ. Das logische AND weist eine Assoziativität von links nach rechts auf.

Die Operanden für den logischen UND-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 UND-Ausdrucks fortgesetzt wird.

Der zweite Operand wird nur ausgewertet, wenn der erste Operand als true (nicht null) ausgewertet wird. Diese Auswertung eliminiert die unnötige Auswertung des zweiten Operanden, wenn der Ausdruck der logischen UND-Operation gleich false ist. Mithilfe dieser Kurzschlussauswertung können Sie Dereferenzierungen durch NULL-Zeiger verhindern, wie im folgenden Beispiel gezeigt:

char *pch = 0;
// ...
(pch) && (*pch = 'a');

Wenn pch null (0) ist, wird die rechte Seite des Ausdrucks niemals ausgewertet. Diese Kurzschlussauswertung macht die Zuordnung durch einen Nullzeiger unmöglich.

Operator-Schlüsselwort für &&

C++ gibt and 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_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate logical AND
#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