Este operador hace más compacta ciertas algoritmos en las que interviene una estructura condicional if.
Para ver su sintaxis resolveremos un problema ya visto.
Problema 1:
Cargar dos valores por teclado. Guardar en otra variable el mayor valor ingresado y mostrarlo.
Programa: programa188.c
Tenemos la expresión:
may=(v1>v2)?v1:v2;
El operador condición empieza después del operador de =
(v1>v2)?v1:v2;
La condición que se encuentra entre paréntesis:
(v1>v2)
puede generar un verdadero o un falso, en caso de ser verdadero lo indicado después del caracter ? se guarda en may. Si la condición genera un falso luego el contenido de v2 se guarda en may.
Esto mismo utilizando un if quedaría de la siguiente forma:
if (v1>v2) { may=v1; } else { may=v2; }
Hay que tener en cuenta que el operador condicional ?: puede remplazar el uso de if en algunas situaciones y no en todas.
La sintaxis del operador condicional entonces es:
condición ? valor si cierto : valor si falso
Luego para usar el resultado que genera el operador condicional disponemos una sintaxis similar a esta:
variable = condición ? valor si cierto : valor si falso
Para ver que se utiliza esta sintaxis del operador condicional ?: mostramos una de las tantas función del código fuente del sistema operativo Linux:

Problema propuesto
- Ingresar por teclado dos números enteros. Si los valores son iguales sumarlos, sino multiplicarlos. Emplear el operador condicional ?: para guardar en una variable el resultado.
programa189.c #include<stdio.h> #include<conio.h> int main() { int v1; int v2; int resultado; printf("Ingrese primer valor:"); scanf("%i",&v1); printf("Ingrese segundo valor:"); scanf("%i",&v2); resultado=(v1==v2)?v1+v2:v1*v2; printf("El resultado es:%i",resultado); getch(); return 0; }
No hay comentarios:
Publicar un comentario