Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os operadores lógicos executam operações lógicas-AND (&&) e lógicas-OR (||).
Sintaxe
logical-AND-expression:
inclusive-OR-expression
logical-AND-expression
&&
inclusive-OR-expression
logical-OR-expression:
logical-AND-expression
logical-OR-expression
||
logical-AND-expression
Observações
Os operadores lógicos não executam as conversões aritméticas usuais. Em vez disso, eles avaliam cada operando em termos de sua equivalência a 0. O resultado de uma operação lógica é 0 ou 1. O tipo de resultado é int.
Os operadores lógicos C são descritos abaixo:
| Operador | Descrição |
|---|---|
&& |
O operador logical-AND produz o valor 1 se ambos os operandos tiverem valores diferentes de zero. Se qualquer operando for igual a 0, o resultado será 0. Se o primeiro operando de uma operação lógica-AND for igual a 0, o segundo operando não será avaliado. |
|| |
O operador logical-OR executa uma operação inclusive-OR em seus operandos. O resultado será 0 se ambos os operandos tiverem 0 valores. Se um dos operandos tiver um valor diferente de zero, o resultado será 1. Se o primeiro operando de uma operação lógico-OR tiver um valor diferente de zero, o segundo operando não será avaliado. |
Os operandos das expressões lógico-AND e lógico-OR são avaliados da esquerda para a direita. Se o valor do primeiro operando for suficiente para determinar o resultado da operação, o segundo operando não será avaliado. Este efeito é conhecido como avaliação de "curto-circuito". Há um ponto de sequência após o primeiro operando na expressão. Para obter mais informações, consulte Pontos de sequência.
Exemplos
Os exemplos a seguir ilustram os operadores lógicos:
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
Neste exemplo, a printf função é chamada para imprimir uma mensagem se x for menor que y e y for menor que z. Se x for maior que y, o segundo operando (y < z) não será avaliado e nada será impresso. É outro caso de avaliação de curto-circuito que deve ser considerado ao escrever comparações lógicas. Caso contrário, pode causar problemas se o código depender dos efeitos colaterais da avaliação do segundo operando.
printf( "%d" , (x == w || x == y || x == z) );
Neste exemplo, se x for igual a w, you z, o segundo argumento para a printf função será avaliado como true e o valor 1 será impresso. Caso contrário, ele é avaliado como false e o valor 0 é impresso. Assim que uma das condições é avaliada como verdadeira, a avaliação cessa.