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>intmain(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");}elseif(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:
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:
NOT ( ! )
O operador "NOT" pega um único operando booliano e retorna o valor oposto. Por exemplo:
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.
#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;
}
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;
}
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;
}