Operadores Lógicos
Operadores para operar sobre bool
's.
Proposições
Uma proposição é uma afirmação que pode ter valor verdadeiro ou falso. Por exemplo:
Acima, claramente, $A$ é verdadeiro e $B$ é falso.
É possível operar com as proposições com as operações E, OU e NÃO, gerando novas proposições:
Em C++, naturalmente, guardamos o resultado de proposições em bool
's. Os operadores que utilizamos para operar sobre bool
's como operamos em proposições são os operadores lógicos.
Operadores Lógicos
Operadores lógicos operam sobre bools. São eles:
&&
(E)||
(OU)!
(NÃO)
a | b | a && b | a || b | !a |
---|---|---|---|---|
true |
true |
true |
true |
false |
true |
false |
false |
true |
|
false |
true |
false |
true |
true |
false |
false |
false |
false |
&&
e||
são binários,!
é unário.||
é OU inclusivo: basta um operando verdadeiro para o resultado ser verdadeiro.
De precedência (maior para menor): !
→ &&
→ ||
.
Quando usados em outros tipos, esses operadores convertem implicitamente seus operandos para bool
.
Exemplos de uso
cout << (true && true) << '\n'; // 1
cout << (true && false) << '\n'; // 0
cout << (false && true) << '\n'; // 0
cout << (false && false) << '\n'; // 0
cout << (true || true) << '\n'; // 1
cout << (true || false) << '\n'; // 1
cout << (false || true) << '\n'; // 1
cout << (false || false) << '\n'; // 0
cout << (!true) << '\n'; // 0
cout << (!false) << '\n'; // 1
````
```cpp
cout << (1 && 2) << '\n'; // 1
cout << (1 && 0) << '\n'; // 0
cout << (1.5 && 'c') << '\n'; // 1
Curto-circuito
Algumas expressões não avaliam todos os operandos:
- Para
&&
: se o primeiro forfalse
, não avalia o segundo. - Para
||
: se o primeiro fortrue
, não avalia o segundo.
Útil quando:
- Um operando é custoso e só deve ser avaliado se necessário.
- O segundo operando depende do primeiro.