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.
Cargar dos valores por teclado. Guardar en otra variable el mayor valor ingresado y mostrarlo.
#include<stdio.h> #include<conio.h> int main() { int v1,v2; int may; printf("Ingrese primer valor:"); scanf("%i",&v1); printf("Ingrese segundo valor:"); scanf("%i",&v2); may=(v1>v2)?v1:v2; printf("El valor mayor es:%i",may); getch(); return 0; }
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:
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; }