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:
- 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:
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