Operadores Lógicos
Os operadores lógicos combinam valores verdade (verdadeiro ou falso), que normalmente são representados em C como números. Qualquer expressão com um valor numérico é um valor verdade válido: zero significa falso, e qualquer outro valor significa verdadeiro. Um tipo de ponteiro também é significativo como valor verdade; um ponteiro nulo (que é zero) significa falso, e um ponteiro não nulo significa verdadeiro (veja ). O valor de um operador lógico é sempre 1 ou 0 e tem o tipo int
(veja ).
Os operadores lógicos são usados principalmente na condição de uma instrução if
, ou no teste final de uma instrução for
ou while
(veja ). No entanto, eles são válidos em qualquer contexto onde uma expressão com valor inteiro seja permitida.
! exp
Operador unário para "não" lógico. O valor é 1 (verdadeiro) se exp
for 0 (falso), e 0 (falso) se exp
for diferente de zero (verdadeiro).
Aviso: se exp
for qualquer coisa além de um lvalue ou uma chamada de função, você deve escrever parênteses ao redor dela.
left && right
O operador binário "e" lógico computa left
e, se necessário, right
. Se ambos os operandos forem verdadeiros, a expressão &&
retorna o valor 1 (verdadeiro). Caso contrário, a expressão &&
retorna o valor 0 (falso). Se left
resultar em um valor falso, isso determina o resultado geral, então right
nem é computado.
left || right
O operador binário "ou" lógico computa left
e, se necessário, right
. Se pelo menos um dos operandos for verdadeiro, a expressão ||
retorna o valor 1 (verdadeiro). Caso contrário, a expressão ||
retorna o valor 0 (falso). Se left
resultar em um valor verdadeiro, isso determina o resultado geral, então right
nem é computado.
Aviso: nunca confie na precedência relativa de &&
e ||
. Quando você usá-los juntos, sempre use parênteses para especificar explicitamente como eles se aninham, como mostrado aqui:
if ((r != 0 && x % r == 0)
||
(s != 0 && x % s == 0))
Atualizado
Isto foi útil?