En C hay otra forma de asignar un valor según si se cumple una condición o no. Es el "operador condicional" ? : (también conocido como "operador ternario"), que se usa:
nombreVariable = condición ? valor1 : valor2;
y equivale a decir "si se cumple la condición, la variable nombreVariable debe tomar el valor valor1; si no, tomará 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
/* ej020901.c */
/* El operador condicional */
/* Ejemplo del apartado 2.9 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int a, b, mayor;
printf("Escriba un número: ");
scanf("%d", &a);
printf("Escriba otro: ");
scanf("%d", &b);
mayor = a > b ? a : b;
printf("El mayor de los números es %d.\n", mayor);
return 0;
}
Realmente, no es necesario guardar en una variable el resultado de la condición. Se podría usar directamente, por ejemplo en un "printf", así:
/* ej020902.c */
/* El operador condicional (2) */
/* Ejemplo del apartado 2.9 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int a, b;
printf("Escriba un número: ");
scanf("%d", &a);
printf("Escriba otro: ");
scanf("%d", &b);
printf("El mayor de los números es %d.\n", a > b ? a : b);
return 0;
}
Un tercer ejemplo, que sume o reste dos números según la opción que se escoja, sería:
/* ej020903.c */
/* El operador condicional (3) */
/* Ejemplo del apartado 2.9 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int a, b, resultado;
int operacion;
printf("Escriba un número: ");
scanf("%d", &a);
printf("Escriba otro: ");
scanf("%d", &b);
printf("Escriba una operación (1 = resta; otro = suma): ");
scanf("%d", &operacion);
resultado = operacion == 1 ? a-b : a+b;
printf("El resultado es %d.\n", resultado);
return 0;
}
Ejercicio propuesto 2.9.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.9.2: Crea un programa que use el operador condicional para dar a una variable llamada "iguales" (entera) el valor 1 si los dos números que ha tecleado el usuario son iguales, o el valor 0 si son distintos.
Ejercicio propuesto 2.9.3: Usa el operador condicional para calcular el menor de dos números.