Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


2.1.8. Operador condicional: ?

En C#, al igual que en la mayoría de lenguajes que derivan de C, hay otra forma de asignar un valor según se cumpla una condición o no, más compacta pero también más difícil de leer. Es el "operador condicional" ? : (también conocido como "operador ternario"), que se usa

nombreVariable = condicion ?  valor1 : valor2;

y equivale a decir "si se cumple la condición, toma el valor valor1; si no, toma el valor valor2". Un ejemplo de cómo podríamos usarlo sería para calcular el mayor de dos números:

numeroMayor = a>b ?  a : b;

esto equivale a la siguiente orden "if":

    if ( a > b )
        numeroMayor = a;
    else
        numeroMayor = b;

Al igual que en este ejemplo, podremos usar el operador condicional cuando queramos optar entre dos valores posibles para una variable, dependiendo de si se cumple o no una condición.

Aplicado a un programa sencillo, podría ser

// Ejemplo_02_01_08a.cs
// El operador condicional
// Introducción a C#, por Nacho Cabanes

using System;

public class Ejemplo_02_01_08a
{
    public static void Main()
    {
        int a, b, mayor;

        Console.Write("Escriba un número: ");
        a = Convert.ToInt32(Console.ReadLine());
        Console.Write("Escriba otro: ");
        b = Convert.ToInt32(Console.ReadLine());

        mayor = a>b ?  a : b;

        Console.WriteLine("El mayor de los números es {0}.", mayor);
    }
}

Un segundo ejemplo, que sume o reste dos números según la opción que se escoja, sería:

// Ejemplo_02_01_08b.cs
// El operador condicional (2)
// Introducción a C#, por Nacho Cabanes

using System;

public class Ejemplo_02_01_08b
{
    public static void Main()
    {
        int a, b, operacion, resultado;

        Console.Write("Escriba un número: ");
        a = Convert.ToInt32(Console.ReadLine());

        Console.Write("Escriba otro: ");
        b = Convert.ToInt32(Console.ReadLine());    

        Console.Write("Escriba una operación (1 = resta; otro = suma): ");
        operacion = Convert.ToInt32(Console.ReadLine());

        resultado = operacion == 1 ?  a-b : a+b;
        Console.WriteLine("El resultado es {0}.", resultado);
    }
}

Ejercicios propuestos:

Ejercicio propuesto 2.1.8.1: Crea un programa que use el operador condicional para mostrar un el valor absoluto de un número de la siguiente forma: si el número es positivo, se mostrará tal cual; si es negativo, se mostrará cambiado de signo.
Ejercicio propuesto 2.1.8.2: Usa el operador condicional para calcular el menor de dos números.