Pular para o conteúdo
Ana Malagoli

Operadores lógicos em C

Como combinar diferentes condições em C, usando os operadores: &&, || e !

C 1 min de leitura

Depois de aprender a fazer comparações e tomar decisões com if e if-else, surge uma necessidade: e quando uma decisão depender de mais de uma condição?

É para isso que servem os operadores lógicos. Eles permitem combinar ou inverter condições.

O operador && significa E.

Ele só retorna verdadeiro quando todas as condições forem verdadeiras. Se pelo menos uma delas for falsa, o resultado será falso.

idade >= 18 && idade <= 60

Nesse caso, as duas condições precisam ser verdadeiras.

O operador || significa OU.

Ele retorna verdadeiro quando pelo menos uma das condições for verdadeira. O resultado só será falso quando todas forem falsas.

dia == 6 || dia == 7

Nesse exemplo, basta que dia seja 6 ou 7 para a condição ser verdadeira.

O operador ! é utilizado para inverter uma condição.

  • Verdadeiro → falso
  • Falso → verdadeiro

Em C:

  • 0 representa falso;
  • Qualquer valor diferente de 0 representa verdadeiro.

Por exemplo:

int ativo = 1;
if (!ativo) {
printf("Desativado");
}

Como ativo possui o valor 1, a condição !ativo será falsa e o printf não será executado.

Eles podem ser combinados com os operadores relacionais para criar condições mais completas:

int idade = 25;
if (idade >= 18 && idade <= 60) {
printf("Idade dentro do intervalo\n");
}

Nesse caso, o programa verifica duas condições:

  1. A idade é maior ou igual a 18?
  2. A idade é menor ou igual a 60?

Como as duas são verdadeiras, o código dentro do if será executado.

Quando várias operações aparecem na mesma expressão segue uma ordem de precedência. De forma simplificada, os operadores aritméticos são avaliados antes dos relacionais, e os relacionais antes dos lógicos.

Entre os operadores lógicos:

! → primeiro
&& → depois
|| → por último

Os operadores &&, || e ! permitem combinar diferentes condições e criar decisões mais completas. Eles são muito utilizados junto com if e if-else e serão fundamentais para construir lógicas mais complexas nos próximos programas.