Original article: Ternary Operator in C Explained

Los programadores usan el operador ternario para tomar decisiones en lugar de sentencias condicionales if y else más largas.

El operador ternario toma tres argumentos:

  1. Un argumento de comparación
  2. El resultado si esa comparación devuelve true
  3. El resultado si esa comparación devuelve false

Es de ayuda pensar en el operador ternario como una forma corta de escribir una sentencia if-else. A continuación un ejemplo simple de toma de decisiones usando if y else:

int a = 10, b = 20, c;

if (a < b) {
    c = a;
}
else {
    c = b;
}

printf("%d", c);

Este ejemplo tiene más de 10 líneas, pero eso no es necesario. El programa puede escribirse en 3 líneas de código usando un operador ternario.

Sintaxis

condición ? valor_true : valor_false

Esta sentencia se evalúa a valor_true si se cumple la condición, y a valor_false en caso contrario.

Este es el ejemplo de arriba usando el operador ternario:

int a = 10, b = 20, c;

c = (a < b) ? a : b;

printf("%d", c);

El output del ejemplo de arriba es:

10

c toma el valor de a, porque se cumplió la condición a < b.

Recordemos que los argumentos de valor_true y valor_false deben tener el mismo tipo, y deben ser expresiones simples en lugar de sentencias completas.

Los operadores ternarios pueden anidarse al igual que las sentencias if-else. Consideremos el siguiente código:

int a = 1, b = 2, ans;
if (a == 1) {
    if (b == 2) {
        ans = 3;
    } else {
        ans = 5;
    }
} else {
    ans = 0;
}
printf ("%d\n", ans);

Este es el código de arriba escrito con operadores ternarios anidados:

int a = 1, b = 2, ans;
ans = (a == 1 ? (b == 2 ? 3 : 5) : 0);
printf ("%d\n", ans);

El output de ambos programas debería ser:

3