Partilhar via


Operadores lógicos C

Os operadores lógicos executam as operações AND lógica (&&) e OR lógica ( || ).

Sintaxe

  • expressão AND lógica:
    expressão OR inclusiva:

    expressão AND lógica && expressão OR inclusiva

  • expressão OR lógica:
    expressão AND lógica

    expressão OR lógica || expressão AND lógica

Os operadores lógicos não executam as conversões aritméticas comuns. 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 do resultado é int.

Os operadores lógicos de C são descritos abaixo:

Operador

Descrição

&&

O operador lógico AND produz o valor 1 se os dois operandos tiverem valores diferentes de zero. Se qualquer um dos operandos for igual a 0, o resultado será 0. Se o primeiro operando de uma operação AND lógica for igual a 0, o segundo operando não será avaliado.

||

O operador OR lógico executa uma operação OR inclusiva em seus operandos. O resultado é 0 se os dois operandos tiverem valores 0. Se qualquer um dos operando tiver um valor diferente de zero, o resultado será 1. Se o primeiro operando de uma operação OR lógica tiver um valor diferente de 0, o segundo operando não será avaliado.

Os operandos de expressões AND lógica e OR lógica 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. Isso é chamado “avaliação pelo caminho mais curto”. Há um ponto de sequência depois do primeiro operando. Consulte Pontos de sequência para obter mais informações.

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 função printf é 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. Observe que isso pode causar problemas nos casos em que o segundo operando tiver efeitos colaterais que sejam usados por algum outro motivo.

printf( "%d" , (x == w || x == y || x == z) );

Nesse exemplo, se x for igual a w, y ou z, o segundo argumento para a função printf é avaliado como verdadeiro e o valor 1 é impresso. Caso contrário, será avaliado como false, e o valor 0 será impresso. Assim que uma das condições for avaliada como true, a avaliação é encerrada.

Consulte também

Referência

Operador AND lógico: &&

Operador OR lógico: ||