Operatore OR logico: ||
Sintassi
logical-or-expression
||
logical-and-expression
Osservazioni:
L'operatore OR logico (||
) restituisce il valore true
booleano se uno o entrambi gli operandi è true
e restituisce 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 OR logico presenta un'associatività da sinistra a destra.
Gli operandi dell'operatore OR logico non devono avere lo stesso tipo, ma devono essere di tipo booleano, integrale o puntatore. Gli operandi sono in genere espressioni di uguaglianza o relazionali.
Il primo operando viene completamente restituito e tutti gli effetti collaterali vengono completati prima di continuare la restituzione dell'espressione OR logica.
Il secondo operando viene valutato solo se il primo operando restituisce false
, perché la valutazione non è necessaria quando l'espressione OR logica è true
. È noto come valutazione a corto circuito .
printf( "%d" , (x == w || x == y || x == z) );
Nell'esempio precedente, se x
è uguale a w
, y
o z
, il secondo argomento della printf
funzione restituisce true
, che viene quindi alzato di livello a un numero intero e viene stampato il valore 1. In caso contrario, restituisce false
e viene stampato il valore 0. Non appena una delle condizioni restituisce true
, la valutazione si arresta.
Parola chiave operator per ||
C++ specifica or
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_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate logical OR
#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