Condividi tramite


Operatore AND logico: &&

expression && expression

Note

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

Gli operandi dell'operatore logico AND non devono essere dello stesso tipo, ma devono essere di tipo 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 di continuare la valutazione dell'espressione logica AND.

Il secondo operando viene valutato solo se il primo operando restituisce true (ossia non un valore zero). Questa valutazione elimina la necessità di valutare il secondo operando quando l'espressione logica AND restituisce 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. Di conseguenza, l'assegnazione mediante un puntatore null non è possibile.

Parola chiave operator per &&

L'operatore and è l'equivalente testuale di &&. Esistono due modi per accedere all'operatore and nei programmi: includendo il file di intestazione iso646.h oppure eseguendo la compilazione con l'opzione del compilatore /Za (disabilitare le estensioni del linguaggio).

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

Vedere anche

Riferimenti

Operatori logici

Operatori C++

Operatori C++, precedenza e associazione

Operatori logici C