Logischer UND-Operator: &&

Syntax

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

Hinweise

Der logische AND-Operator (&&) gibt zurücktrue, wenn beide Operanden vorhanden sind und andernfalls zurückgegeben false werdentrue. Die Operanden werden implizit vor der Auswertung in typkonvertiert bool , und das Ergebnis ist vom Typ bool. Das logische AND weist eine Assoziativität von links nach rechts auf.

Die Operanden für den logischen AND-Operator müssen nicht denselben Typ aufweisen, sie müssen jedoch einen booleschen, integralen oder Zeigertyp aufweisen. Die Operanden sind im Allgemeinen relationale oder Gleichheitsausdrücke.

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

Der zweite Operand wird nur ausgewertet, wenn der erste Operand (nonzero) ausgewertet true wird. Diese Auswertung beseitigt eine unnötige Auswertung des zweiten Operanden, wenn der logische AND-Ausdruck ist false. 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 (keyword) für&&

C++ gibt and als alternative Schreibweise für &&. In C wird die alternative Schreibweise als Makro im <Iso646.h-Header> bereitgestellt. In C++ ist die alternative Schreibweise ein Schlüsselwort (keyword); die Verwendung von <iso646.h> oder das C++-Äquivalent <ciso646> ist veraltet. In Microsoft C++ ist die Option oder /Za die /permissive- Compileroption 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 Zuordnung
Logische C-Operatoren