La forma abreviada que ofrece el lenguaje
C para la pregunta sencilla tiene la siguiente sintaxis:
| condición ? expresión_1: expresión_2; |
en la cual se evalúa la condición y si el resultado es verdadero, el valor de la expresión_1 se convierte en el resultado de esa instrucción, en caso contrario, expresión_2 será el resultado que se obtiene para la pregunta simple abreviada.
Por ejemplo para el caso de una instrucción de reemplazo:
| main()
{ . . e=(a<b) && (c>d) ? b+d: b-d; . . } |
Que se interpreta exactamente igual que el primer ejemplo mostrado, es decir, si la condición se cumple, se almacena en e la suma y en caso contrario la resta.
Otra posibilidad es cuando únicamente se ejecutan funciones y no se asigna valor alguno como en el ejemplo siguiente en el que se considera la evaluación de valores lógicos de variables y la ejecución de funciones como alternativas:
| main()
{ . . condición_logica ? funcion1(argumentos): funcion2(argumentos); . . } |
En el cual si el resultado de la condición lógica es 1 (CIERTO), se llama a la funcion1() y si el resultado es un 0 (FALSO), se llama a la funcion2().
Considere ahora un ejemplo en el que se despliegan mensajes de saludo o despedida dependiendo de un número aleatorio:
| File Edit Search Run Compile Debug Project Options Window Help |
|
|
|
#include<stdio.h> #include<conio.h> #include<stdlib.h>
/* inicia la funcion
principal que llama a funciones de biblioteca */
main() { int y; clrscr(); /* Borra la pantalla */ randomize(); /* Permite generar un número aleatorio con <time.h> /* y = random(2); /* Permite generar un cero o un uno */ y ? printf(" Hola "): printf(" Adios "); getche(); /* getche es una funcion que espera hasta que se presione una tecla */ } |
Considere el mismo ejemplo llamando a dos funciones que el programador define:
| #include<stdio.h>
#include<conio.h> #include<stdlib.h>
/* Se declaran los
tipos de funciones que se emplean en el programa */
void saludo(void); void despedida(void);
/* inicia la función
principal que llama a dos funciones creadas */
main() { int y; clrscr(); /* borra la pantalla */ randomize(); /* permite generar un número aleatorio con <time.h> */ y = random(2); /* permite generar un cero o un uno */ y ? saludo(): despedida(); getche(); /* getche es una funcion que espera hasta que se presione una tecla */ } void saludo(void) { printf("\n\n Bienvenido "); getche(); } void despedida(void) { printf("\n\n Hasta nunca"); } |