Operadores de comparación y operadores lógicos en C#
¿Qué es esto y para qué sirve?
Imagina que estás jugando un videojuego. Para pasar el nivel, necesitas verificar diferentes condiciones: "Si el héroe tiene menos de 10 vidas, activa la protección" o "Si el jugador presionó el botón Y recogió todas las monedas, abre la puerta".
En programación, estas verificaciones se realizan con operadores de comparación y operadores lógicos. Ayudan al programa a "pensar" y tomar decisiones. Sin ellos, el código sería solo una lista de comandos que siempre se ejecutan igual, pero así el programa puede reaccionar a diferentes situaciones.
Por ejemplo, estás escribiendo una calculadora de calificaciones. Si el estudiante obtuvo más de 90 puntos — "Excelente", si menos de 50 — "Malo". O verificas si un usuario puede iniciar sesión en el sistema: si la contraseña es correcta Y la cuenta no está bloqueada — déjalo pasar.
Los operadores de comparación comparan números o texto. Los operadores lógicos combinan varias condiciones en una. Juntos son la base de cualquier código "inteligente".
Sintaxis y ejemplos de código
En C#, los operadores de comparación se ven así:
==— igual a (atención: dos signos igual, ¡no uno!)!=— diferente de>— mayor que<— menor que>=— mayor o igual que<=— menor o igual que
Operadores lógicos:
&&— Y (ambas condiciones deben ser verdaderas)||— O (al menos una condición es verdadera)!— NO (cambia verdadero por falso y viceversa)
El resultado de una comparación siempre es true (verdadero) o false (falso).
Ejemplo 1: Verificación de edad
int age = 14;
bool canDrive = age >= 18; // false, porque 14 es menor que 18
if (canDrive)
{
Console.WriteLine("¡Puedes conducir!");
}
else
{
Console.WriteLine("Crece un poco más."); // Esto se ejecutará
}
// Explicación:
// age >= 18 — es una comparación. Da false.
// if verifica true/false. Si es true — ejecuta el primer bloque, si es false — el segundo.
Ejemplo 2: Verificación de usuario y contraseña
string login = "user123";
string password = "qwerty";
// Verificamos que el login sea "admin" Y la contraseña sea "12345"
if (login == "admin" && password == "12345")
{
Console.WriteLine("¡Bienvenido, admin!");
}
else
{
Console.WriteLine("Usuario o contraseña incorrectos.");
}
// Explicación:
// && significa "Y". Ambas condiciones deben ser true.
// login == "admin" — false (porque login = "user123")
// Por lo tanto, toda la condición es false — vamos al else.
Ejemplo 3: Descuento para estudiantes o jubilados
int age = 20;
bool isStudent = true;
// Descuento si la edad es menor de 18 O la persona es estudiante
if (age < 18 || isStudent)
{
Console.WriteLine("¡50% de descuento!");
}
else
{
Console.WriteLine("Precio completo.");
}
// Explicación:
// || significa "O". Basta con que una sea true.
// age < 18 — false (20 no es menor que 18)
// isStudent — true
// Por lo tanto, la condición es true — se aplica el descuento.
Ejemplo 4: Verificar que un número no sea cero
int number = 7;
if (number != 0)
{
Console.WriteLine("El número no es cero, se puede dividir.");
}
else
{
Console.WriteLine("¡No se puede dividir por cero!");
}
// Explicación:
// != verifica "diferente de".
// 7 != 0 — es true, por lo tanto se ejecuta el primer bloque.
Ejemplo 5: Condición compleja con NO
bool isRaining = false;
bool hasUmbrella = true;
// Si NO está lloviendo O hay paraguas — se puede salir
if (!isRaining || hasUmbrella)
{
Console.WriteLine("¡Vamos a pasear!");
}
else
{
Console.WriteLine("Nos quedamos en casa.");
}
// Explicación:
// !isRaining — es "NO isRaining". isRaining = false, entonces !false = true.
// true || true = true — salimos.
// Si isRaining = true y hasUmbrella = false, entonces !true = false, false || false = false — nos quedamos en casa.
Comparación con Python
En Python, los mismos operadores se ven casi igual, pero hay un par de diferencias:
- En lugar de
&&se escribeand - En lugar de
||se escribeor - En lugar de
!se escribenot - Los operadores de comparación son los mismos:
==,!=,>,<,>=,<=
Ejemplo en Python (el mismo que en C#):
age = 14
can_drive = age >= 18 # False
if can_drive:
print("¡Puedes conducir!")
else:
print("Crece un poco más.")
# Operadores lógicos:
login = "user123"
password = "qwerty"
if login == "admin" and password == "12345":
print("¡Bienvenido, admin!")
else:
print("Usuario o contraseña incorrectos.")
La principal diferencia: en C# los operadores lógicos son símbolos (&&, ||, !), mientras que en Python son palabras (and, or, not). En el resto, la lógica es la misma.
Errores típicos de principiantes
-
Confundir = y ==
=— es asignación (guardar un valor en una variable).
==— es comparación (verificar si los valores son iguales).
Error:if (age = 18)— ¡no se puede! Debe serif (age == 18). -
Olvidar la prioridad de operaciones
Primero se ejecutan las comparaciones, luego los operadores lógicos. Pero es mejor usar paréntesis para mayor claridad.
Ejemplo:if (age > 18 && name == "Tom" || score > 100)— no está claro qué se quiso decir. Correcto:if ((age > 18 && name == "Tom") || score > 100). -
Confundir && y ||
&&requiere que todas las condiciones sean verdaderas;||requiere que al menos una sea verdadera.