Artículo original: 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:
- Un argumento de comparación
- El resultado si esa comparación devuelve true
- 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:
10c 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