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.