Operator logiczny AND: &&

Składnia

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

Uwagi

Operator logiczny AND () zwraca wartość ,&& jeśli oba operandy są true i zwracają falsetrue inaczej. Operandy są niejawnie konwertowane na typ bool przed oceną, a wynik jest typu bool. Wartość logiczna AND ma kojarzenie od lewej do prawej.

Operandy operatora logicznego AND nie muszą mieć tego samego typu, ale muszą mieć typ logiczny, całkowity lub wskaźnik. Operandy są często wyrażeniami relacyjnymi lub równości.

Pierwszy operand jest obliczany całkowicie i wszystkie skutki uboczne są wykonywane przed oceną logicznego wyrażenia AND kontynuuje.

Drugi operand jest oceniany tylko wtedy, gdy pierwszy operand oblicza wartość true (nonzero). Ta ocena eliminuje niepotrzebne obliczanie drugiego operandu, gdy logiczne wyrażenie AND to false. Tej oceny zwarć obwodu można użyć, aby zapobiec wyłuszaniu wskaźnika null, jak pokazano w poniższym przykładzie:

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

Jeśli pch ma wartość null (0), prawa strona wyrażenia nigdy nie zostanie obliczona. Ta ocena zwarciowa sprawia, że przypisanie przez wskaźnik o wartości null jest niemożliwe.

Operator — słowo kluczowe dla &&

Język C++ określa and jako alternatywną pisownię dla elementu &&. W języku C alternatywna pisownia jest dostarczana jako makro w nagłówku <iso646.h> . W języku C++, alternatywna pisownia jest słowem kluczowym; użycie iso646.h> lub równoważnego <<ciso646> języka C++ jest przestarzałe. W języku Microsoft C++ /permissive- opcja lub /Za kompilatora jest wymagana do włączenia alternatywnej pisowni.

Przykład

// 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;
}

Zobacz też

Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Operatory logiczne języka C