cpp-condicional-ternario

Qué es y cómo usar el operador ternario en C++

El operador ternario en C++ es una forma concisa de realizar una evaluación condicional (también se le conoce como operador condicional).

Es adecuado para simplificar asignaciones basadas en una condición, ofreciendo una alternativa más compacta a la clásica estructura if-else.

Sintaxis Básica

El operador ternario en C++ sigue esta sintaxis básica:

condicion ? expresion_verdadera : expresion_falsa
  • Condición: Es una expresión booleana que se evalúa como verdadera (true) o falsa (false).
  • Expresión Verdadera: Es el valor o la expresión que se devuelve si la condición es verdadera.
  • Expresión Falsa: Es el valor o la expresión que se devuelve si la condición es falsa.

Ejemplo Básico

Supongamos que queremos determinar si un número es par o impar y almacenar el resultado en una variable llamada resultado. Podemos usar el operador ternario para hacer esto de manera más compacta.

#include <iostream>
#include <string>

int main() {
    int numero = 10;
    std::string resultado = (numero % 2 == 0) ? "par" : "impar";
    std::cout << "El número es " << resultado << std::endl;
    return 0;
}

En este código, el operador ternario evalúa si numero % 2 == 0 (es decir, si el número es par). Si la condición es verdadera, resultado se establece en "par"; si es falsa, se establece en "impar". Este enfoque reduce la necesidad de una estructura if-else más extensa.

Anidación del Operador Ternario

El operador ternario puede ser anidado para manejar múltiples condiciones.

#include <iostream>
#include <string>

int main() {
    int numero = 10;

    std::string resultado = (numero > 0) ? "positivo" :
                            (numero < 0) ? "negativo" : "cero";

    std::cout << "El número es " << resultado << std::endl;
    return 0;
}

Aquí,

  • Se evalúa primero si el numero es mayor que 0
  • Si es verdadero, resultado se establece en "positivo"
  • Si es falso, se evalúa si el número es menor que 0
  • Si esto también es falso, resultado se establece en "cero"

La anidación excesiva puede afectar la legibilidad del código. Así que tampoco abuséis de ella

Ejemplos prácticos

Comparar dos números y determinar el mayor

Para comparar dos números y determinar cuál es mayor, podemos usar el operador ternario en lugar de una estructura if-else más extensa.

#include <iostream>

int main() {
    int a = 5;
    int b = 8;
    int mayor = (a > b) ? a : b;

    std::cout << "El mayor número es " << mayor << std::endl;
    return 0;
}

En este ejemplo, mayor se asigna el valor de a si a es mayor que b; de lo contrario, se le asigna el valor de b.

Asignación de valores

El operador ternario es útil para asignar un valor basado en una condición simple en una sola línea de código.

#include <iostream>
#include <string>

int main() {
    int edad = 20;
    std::string categoria = (edad >= 18) ? "adulto" : "menor de edad";
    std::cout << "La persona es " << categoria << std::endl;
    return 0;
}

Aquí, categoria se establece en "adulto" si edad es mayor o igual a 18; de lo contrario, se establece en "menor de edad".

Valor de retorno en métodos

El operador ternario también puede ser utilizado para determinar el valor de retorno de un método basado en una condición.

#include <iostream>
#include <string>

std::string obtenerSaludo(bool esFormal) {
    return esFormal ? "Buenos días, señor(a)" : "Hola";
}

int main() {
    bool esFormal = true;
    std::cout << obtenerSaludo(esFormal) << std::endl;
    return 0;
}

En este caso, la función obtenerSaludo devuelve "Buenos días, señor(a)" si esFormal es verdadero; de lo contrario, devuelve "Hola".

Estos ejemplos ilustran cómo usar el operador ternario para simplificar el código. No siempre es la mejor opción para todas las situaciones, especialmente si la lógica es compleja. En tales casos, las estructuras if-else pueden ofrecer una mejor claridad.