Operadores de Comparação e Operadores Lógicos em C#
O que é e para que serve?
Imagine que você está jogando um jogo de computador. Para passar de fase, você precisa verificar diferentes condições: "Se o herói tem menos de 10 vidas, ative a proteção" ou "Se o jogador pressionou o botão E coletou todas as moedas, abra a porta".
Na programação, essas verificações são feitas por operadores de comparação e operadores lógicos. Eles ajudam o programa a "pensar" e tomar decisões. Sem eles, o código seria apenas uma lista de comandos que são executados sempre da mesma forma, mas assim o programa pode reagir a diferentes situações.
Por exemplo, você está escrevendo uma calculadora de notas. Se o aluno obteve mais de 90 pontos — "Excelente", se menos de 50 — "Ruim". Ou você verifica se o usuário pode entrar no sistema: se a senha estiver correta E a conta não estiver bloqueada — deixe entrar.
Operadores de comparação comparam números ou texto. Operadores lógicos combinam várias condições em uma. Juntos, eles são a base de qualquer código "inteligente".
Sintaxe e exemplos de código
Em C#, os operadores de comparação são assim:
==— igual a (atenção: dois sinais de igual, não um!)!=— diferente de>— maior que<— menor que>=— maior ou igual a<=— menor ou igual a
Operadores lógicos:
&&— E (ambas as condições devem ser verdadeiras)||— OU (pelo menos uma condição é verdadeira)!— NÃO (inverte verdadeiro para falso e vice-versa)
O resultado de uma comparação é sempre true (verdadeiro) ou false (falso).
Exemplo 1: Verificação de idade
int age = 14;
bool canDrive = age >= 18; // false, porque 14 é menor que 18
if (canDrive)
{
Console.WriteLine("Você pode dirigir!");
}
else
{
Console.WriteLine("Espere crescer mais."); // Isso será executado
}
// Explicação:
// age >= 18 — é uma comparação. Ela resulta em false.
// if verifica true/false. Se true — executa o primeiro bloco, se false — o segundo.
Exemplo 2: Verificação de login e senha
string login = "user123";
string password = "qwerty";
// Verificamos se o login é igual a "admin" E a senha é igual a "12345"
if (login == "admin" && password == "12345")
{
Console.WriteLine("Bem-vindo, admin!");
}
else
{
Console.WriteLine("Login ou senha inválidos.");
}
// Explicação:
// && significa "E". Ambas as condições devem ser true.
// login == "admin" — false (porque login = "user123")
// Portanto, toda a condição é false — vamos para o else.
Exemplo 3: Desconto para estudantes ou aposentados
int age = 20;
bool isStudent = true;
// Desconto se a idade for menor que 18 OU a pessoa for estudante
if (age < 18 || isStudent)
{
Console.WriteLine("Desconto de 50%!");
}
else
{
Console.WriteLine("Preço total.");
}
// Explicação:
// || significa "OU". Basta um true.
// age < 18 — false (20 não é menor que 18)
// isStudent — true
// Portanto, a condição é true — o desconto é concedido.
Exemplo 4: Verificando se o número não é zero
int number = 7;
if (number != 0)
{
Console.WriteLine("O número não é zero, pode dividir.");
}
else
{
Console.WriteLine("Não pode dividir por zero!");
}
// Explicação:
// != verifica "diferente de".
// 7 != 0 — é true, portanto o primeiro bloco é executado.
Exemplo 5: Condição complexa com NÃO
bool isRaining = false;
bool hasUmbrella = true;
// Se NÃO está chovendo OU tem guarda-chuva — pode passear
if (!isRaining || hasUmbrella)
{
Console.WriteLine("Vamos passear!");
}
else
{
Console.WriteLine("Ficamos em casa.");
}
// Explicação:
// !isRaining — é "NÃO isRaining". isRaining = false, então !false = true.
// true || true = true — vamos passear.
// Se isRaining = true e hasUmbrella = false, então !true = false, false || false = false — ficamos em casa.
Comparação com Python
Em Python, os mesmos operadores são quase iguais, mas há algumas diferenças:
- Em vez de
&&usa-seand - Em vez de
||usa-seor - Em vez de
!usa-senot - Operadores de comparação são os mesmos:
==,!=,>,<,>=,<=
Exemplo em Python (o mesmo que em C#):
age = 14
can_drive = age >= 18 # False
if can_drive:
print("Você pode dirigir!")
else:
print("Espere crescer mais.")
# Operadores lógicos:
login = "user123"
password = "qwerty"
if login == "admin" and password == "12345":
print("Bem-vindo, admin!")
else:
print("Login ou senha inválidos.")
A principal diferença: em C#, os operadores lógicos são símbolos (&&, ||, !), enquanto em Python são palavras (and, or, not). No resto, a lógica é a mesma.
Erros típicos de iniciantes
-
Confundir = e ==
=— é atribuição (colocar um valor em uma variável).
==— é comparação (verificar se os valores são iguais).
Erro:if (age = 18)— não pode! Deve serif (age == 18). -
Esquecer a precedência de operadores
Primeiro são executadas as comparações, depois os operadores lógicos. Mas é melhor usar parênteses para clareza.
Exemplo:if (age > 18 && name == "Tom" || score > 100)— não está claro o que se pretendia. Correto:if ((age > 18 && name == "Tom") || score > 100). -
Confundir && e ||
&&exige que todas as condições sejam verdadeiras.||exige que pelo menos uma seja verdadeira.