🔷 C#

Operadores de comparación y operadores lógicos en C#

```html

¿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 escribe and
  • En lugar de || se escribe or
  • En lugar de ! se escribe not
  • 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

  1. 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 ser if (age == 18).
  2. 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).
  3. Confundir && y ||
    && requiere que todas las condiciones sean verdaderas; || requiere que al menos una sea verdadera.
```