Operatore AND logico: &&

Sintassi

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

Osservazioni:

L'operatore AND logico (&&) restituisce true se entrambi gli operandi sono true e restituiscono false in caso contrario. Gli operandi vengono convertiti in modo implicito nel tipo bool prima della valutazione e il risultato è di tipo bool. L'operatore logico AND presenta un'associatività da sinistra verso destra.

Gli operandi dell'operatore AND logico non devono avere lo stesso tipo, ma devono avere un tipo booleano, integrale o puntatore. Gli operandi sono in genere espressioni di uguaglianza o relazionali.

Il primo operando viene valutato completamente e tutti gli effetti collaterali vengono completati prima della valutazione dell'espressione AND logica continua.

Il secondo operando viene valutato solo se il primo operando restituisce (diverso da true zero). Questa valutazione elimina la valutazione inutile del secondo operando quando l'espressione AND logica è false. È possibile utilizzare questa valutazione di corto circuito per impedire la deferenziazione del puntatore NULL, come illustrato nell'esempio seguente:

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

Se pch è null (0), il lato destro dell'espressione non viene mai valutato. Questa valutazione a corto circuito rende impossibile l'assegnazione tramite un puntatore Null.

Parola chiave operator per &&

C++ specifica and come ortografia alternativa per &&. In C, l'ortografia alternativa viene fornita come macro nell'intestazione <iso646.h> . In C++, l'ortografia alternativa è una parola chiave; l'uso di <iso646.h> o del ciso646> equivalente <C++ è deprecato. In Microsoft C++, l'opzione del /permissive- compilatore o /Za è necessaria per abilitare l'ortografia alternativa.

Esempio

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

Vedi anche

Operatori, precedenza e associatività predefiniti C++
Operatori logici C