EL OPERADOR ? COMO PREGUNTA if - else SIMPLE


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
If_Else

#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");

}


 



 

Selecciona un tema