Operadores lógicos

Você vai aprender

  • O que são operadores lógicos.

  • Quais são e como usar.

Pré-requisitos

Definição

Operações lógicas são aquelas que efetuam operações em expressões boolianas. Para deixar isso mais claro, lembremos das operações que fizemos quando estávamos calculando o troco da padaria:

#include<stdio.h>
#include<stdbool.h>

int main(void) {

  bool falhou_a_compra = false;
  
  float dinheiro_cliente = 50;
  float total_compras = 20;
  
  if(dinheiro_cliente == total_compras) {
    printf("A compra foi um sucesso!\n");
  } else if (dinheiro_cliente > total_compras) {
    float troco = 0;
    printf("A compra foi um sucesso, seu troco foi de R$%g reais!\n", troco);
  } else {
    printf("Erro! Dinheiro insuficiente!\n");
    falhou_a_compra = true;
  }
  
  return falhou_a_compra ;
}

Quando fazemos as operações dinheiro_cliente == total_compras e dinheiro_cliente > total_compras, essas operações implicam que uma expressão booliana é gerada, e, ao trabalhar com operadores lógicos, nós utilizamos essas expressões ou até mesmo variáveis boolianas, para criar as operações lógicas. Operadores lógicos podem ser usadas em estruturas condicionais ou até mesmo em estruturas de repetições (que ainda chegaremos lá).

Por agora, veremos quais são os operadores lógicos, além de ver alguns exemplos.

AND ( && )

O operador "AND" recebe duas ou mais expressões boolianas e retorna verdadeiro se e somente se ambas expressões forem verdadeiras. Por exemplo:

Exemplo do operador AND (&&)
#include<stdio.h>

int main(void) {
    int x = 5;
    int y = 10;
    if (x > 0 && y > 0) {
        // ambos x e y são maiores que 0
        // Este bloco será executado
        printf("ambas condições são verdadeiras\n");
    } else {
        printf("uma das condições é falsa\n");
    }
    return 0;
}

OR ( || )

O operador "OR" recebe duas ou mais expressões boolianas e retorna verdadeiro se pelo menos uma das expressões for verdadeira. Por exemplo:

Exemplo do operador OR (||)



    if (x > 0 || y > 0) {
        // ou x ou y ou ambos são maiores que 0
        // Este bloco será executado
        printf("uma das condições pelo menos é verdadeira\n");
    } else {
        printf("Ambas condições são falsas");
    }
    return 0;
}

NOT ( ! )

O operador "NOT" pega um único operando booliano e retorna o valor oposto. Por exemplo:

Exemplo do operador NOT (!)
#include<stdio.h>
#include<stdbool.h>
int main(void) {

    bool eh_verdadeiro = false;
    if (!eh_verdadeiro) {
        // O operador NOT irá inverter o valor, se for falso
        // este será verdadeiro, se for verdadeiro, agora ele irá ser falso
        // este bloco será executado quando o valor for falso
        printf("a variável tem o valor falso\n");
    } else {
        printf("a variavel tem o valor verdadeiro\n");
    }
    return 0;
}

Vale ressaltar que, assim como nos operadores aritméticos, os operadores lógicos costumam ter uma ordem de precedência e uma sequência lógica de avaliação das operações. O operador "NOT "tem a precedência mais alta, seguido pelo operador "AND" e pelo operador "OR". Porém, em algumas situações, também é possível agrupar as operações utilizando parênteses para indicar a ordem de avaliação.

Uma sugestão para vocês, não esqueçam de pegar esses trechos de códigos e rodar na máquina de vocês, talvez colocando essas frases comentadas dentro de um print para ver o funcionamento dos operadores lógicos.

Last updated