Cargando...

Operadores y expresiones en C#

Operadores y expresiones en C#: uso de operadores aritméticos, de comparación, lógicos, de incremento/decremento, ternario y null-coalescing.

En C#, los operadores son símbolos especiales que realizan operaciones sobre variables o valores. Con estos símbolos puedes hacer cálculos matemáticos, comparar dos valores, crear condiciones lógicas o asignar rápidamente un valor a una variable. Las estructuras formadas al combinar operadores se llaman expresiones. Las expresiones son los bloques fundamentales que dirigen el flujo del programa y producen resultados.


Operador de asignación (=)

Se utiliza para asignar un valor a una variable.


int x = 5;
string mensaje = "Hola";
x = 10;

Aquí, a la variable x de tipo int se le asigna el valor 5, y a la variable mensaje de tipo string se le asigna el valor "Hola". Más tarde, a x se le asigna el valor 10.

Operadores aritméticos

En C#, los operadores aritméticos se utilizan para realizar operaciones numéricas. Estos operadores permiten realizar operaciones básicas como suma, resta, multiplicación, división y módulo (resto).

Operador Descripción Ejemplo (x=10, y=3) Resultado
+ Suma x + y 13
- Resta x - y 7
* Multiplicación x * y 30
/ División x / y 3
% Módulo (resto) x % y 1

Ejemplo:


int a = 15;
int b = 4;

Console.WriteLine(a + b); // 19
Console.WriteLine(a / b); // 3
Console.WriteLine(a % b); // 3

Operadores de comparación

En C#, los operadores de comparación se utilizan para comparar dos valores. El resultado de estas operaciones es siempre de tipo bool.

bool es un tipo lógico que solo puede tomar los valores true (verdadero) o false (falso).

Operador Descripción Ejemplo (x=10, y=3) Resultado
== ¿Igual a? x == y false
!= ¿Diferente de? x != y true
> ¿Mayor que? x > y true
< ¿Menor que? x < y false
>= ¿Mayor o igual que? x >= y true
<= ¿Menor o igual que? x <= y false

Ejemplo:


int a = 7;
int b = 10;

bool res1 = (a < b);     // true
bool res2 = (a == b);    // false

Console.WriteLine(res1); // true
Console.WriteLine(res2); // false

Operadores lógicos

Se utilizan para combinar condiciones. Estas condiciones son de tipo bool. Ejecutan las operaciones lógicas y, o y no.

Valor 1 Valor 2 && (y) || (o)
true true true true
true false false true
false true false true
false false false false

Los operadores se utilizan así:

Operador Descripción Ejemplo (a=true, b=false) Resultado
&& y a && b false
|| o a || b true
! no !a false

Por ejemplo, si la variable x es menor que 5 y la variable y es mayor que 10, la condición se escribe así:


bool crit = x < 5 && y > 10;

Un ejemplo sencillo: si la edad es mayor o igual a 18 y el usuario tiene licencia de conducir, puede manejar un coche:

using System;

class Program
{
    static void Main()
    {
        Console.Write("Ingrese su edad: ");
        int edad = int.Parse(Console.ReadLine());

        Console.Write("¿Tiene licencia de conducir? (Y/N): ");
        string respuesta = Console.ReadLine().ToUpper();

        bool licencia = (respuesta == "Y");

        if (edad >= 18 && licencia)
        {
            Console.WriteLine("Puede conducir un coche.");
        }
        else
        {
            Console.WriteLine("No puede conducir un coche.");
        }
    }
}

Operadores de asignación compuesta

Combinan la asignación con la aritmética. Por ejemplo, sumar 5 a un número, restar 2 o multiplicarlo por 6.

Operador Descripción Ejemplo (x=10) Resultado
+= sumar x += 5 15
-= restar x -= 2 8
*= multiplicar x *= 6 60
/= dividir x /= 2 5
%= módulo x %= 2 0

Operadores de incremento y decremento

Se utilizan para aumentar o disminuir un número en 1.


int x = 5;

x++; // 6
x--; // 5

Prefijo vs. Postfijo:


int a = 5;
Console.WriteLine(++a); // 6 (incrementar antes, luego mostrar)
Console.WriteLine(a++); // 6 (mostrar antes, luego incrementar → a=7)

Operador ternario (?:)

Es una forma corta de if-else. Selecciona una de dos opciones según la condición.

using System;

class Program
{
    static void Main()
    {
        Console.Write("Ingrese un número: ");
        int num = int.Parse(Console.ReadLine());

        string resultado = (num % 2 == 0) 
            ? "El número ingresado es par." 
            : "El número ingresado es impar.";

        Console.WriteLine(resultado);
    }
}

Operadores de coalescencia nula (?? y ??=)

En C#, null indica que una variable no hace referencia a ningún valor. En otras palabras, la variable está definida pero no contiene ningún valor. Esto ocurre comúnmente en variables de tipo string o de clase (tipos de referencia).

A veces queremos asignar un valor predeterminado en lugar de null. Aquí es donde entran en juego los operadores de coalescencia nula:

Ejemplo 1: uso de ??


string name = null;
string result = name ?? "Sin nombre";

Console.WriteLine(result);

Ejemplo 2: uso de ??=


string name = null;
name ??= "Desconocido";

Console.WriteLine(name); // Desconocido

Ejemplo (Carrito de compras)

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        // Cultura de entrada: reducir problemas de punto/coma
        CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;

        // 1) Lectura de datos del usuario
        Console.Write("Nombre (puede dejarlo en blanco): ");
        string nombre = Console.ReadLine();
        nombre = string.IsNullOrWhiteSpace(nombre) ? null : nombre.Trim();
        nombre ??= "Invitado"; // (??=) valor predeterminado si null

        Console.Write("Ciudad (puede dejarlo en blanco): ");
        string ciudad = Console.ReadLine();
        ciudad = string.IsNullOrWhiteSpace(ciudad) ? null : ciudad.Trim();
        string ciudadInfo = ciudad ?? "Ciudad desconocida"; // (??) valor si null

        Console.Write("Total del carrito (ej. 749.90): ");
        double carrito = double.Parse(Console.ReadLine());

        Console.Write("¿Es usted miembro? (Y/N): ");
        bool miembro = Console.ReadLine().Trim().ToUpper() == "Y";

        Console.Write("Código de cupón (puede dejarlo en blanco): ");
        string cupon = Console.ReadLine();
        cupon = string.IsNullOrWhiteSpace(cupon) ? null : cupon.Trim().ToUpper();

        Console.Write("¿Desea envío exprés? (Y/N): ");
        bool express = Console.ReadLine().Trim().ToUpper() == "Y";

        // 2) Reglas de negocio y operadores

        // Aritmética: IVA, descuento, envío, total
        const double IvaTasa = 0.20;          // 20% IVA
        const double MiembroDesc1 = 0.05;     // 5% si miembro
        const double MiembroDesc2 = 0.10;     // 10% si miembro y carrito >= 500
        const double CuponDesc = 0.10;        // +10% si cupón "DESCUENTO10" o "CODIGO10"
        const double MaxDescuento = 0.25;     // Tope máximo 25%
        const double EnvStandard = 19.90;
        const double EnvExpress = 49.90;
        const double UmbralEnvGratis = 300.0;

        // Comparación + lógica: determinar porcentaje de descuento
        double descTasa = miembro && carrito >= 500
            ? MiembroDesc2
            : (miembro ? MiembroDesc1 : 0.0);

        // Lógica: verificación de cupón (O)
        if (cupon == "DESCUENTO10" || cupon == "CODIGO10")
            descTasa += CuponDesc;            // Asignación compuesta (+=)

        // Aplicar tope
        descTasa = Math.Min(descTasa, MaxDescuento);

        // Calcular descuento e IVA
        double descMonto = carrito * descTasa;
        double subtotal = carrito - descMonto;
        double iva = subtotal * IvaTasa;

        // Envío: ¿exprés? si no, verificar envío gratis
        double envio = express
            ? EnvExpress
            : (subtotal >= UmbralEnvGratis ? 0.0 : EnvStandard);

        // Total general
        double total = subtotal + iva;
        total += envio;

        // 3) Resumen
        Console.WriteLine();
        Console.WriteLine("— Resumen de pago —");
        Console.WriteLine($"Cliente      : {nombre} ({ciudadInfo})");
        Console.WriteLine($"Carrito      : {carrito:0.00} EUR");
        Console.WriteLine($"Descuento %  : {(descTasa * 100):0}%  (-{descMonto:0.00} EUR)");
        Console.WriteLine($"Subtotal     : {subtotal:0.00} EUR");
        Console.WriteLine($"IVA (20%)    : {iva:0.00} EUR");
        Console.WriteLine($"Envío        : {envio:0.00} EUR {(express ? "(Exprés)" : "(Estándar)")}");
        Console.WriteLine($"Total general: {total:0.00} EUR");

        // Ejemplo lógico adicional: nota en la factura
        bool carritoAlto = total >= 1000.0;
        Console.WriteLine(carritoAlto && miembro
            ? "Nota: Ha ganado puntos extra por su pedido de alto valor."
            : "Nota: Con una membresía puede beneficiarse de descuentos adicionales.");
    }
}

Con este ejemplo puede probar en su aplicación de consola una práctica combinada de los operadores anteriores.

Aplicación de consola C# Carrito

La salida de la aplicación será como en la captura de pantalla anterior.