4. Operadores

4.6. Operador condicional (?)

El operador "?:" se trata de un operador ternario (es decir tiene TRES operandos)

Sintaxis:

    <expresión lógica> ? <expresión> : <expresión>

En la expresión E1? E2:E3, primero se evalúa la expresión E1, si el valor es verdadero ("true"), se evaluará la expresión E2 y E3 será ignorada, si es falso ("false"), se evaluará E3 y E2 será ignorada.
Hay ciertas limitaciones en cuanto al tipo de los argumentos:

  • E1 debe ser una expresión lógica.
  • E2 y E3 deben ser de tipo aritmético.
  • E2 y E3 deben ser de estructuras o uniones compatibles.
  • E2 y E3 deben ser de tipo "void".

Veamos un ejemplo:

En este ejemplo usamos una función cin, esta pertenece a la librería iostream y se usa para ingresar por teclados valores que son almacenado en una varaible.

Se pide al alumno, correr el código, probar para la siguientes entradas de datos  y luego analizar la salida.

  • a=10.5  b=105.2  , cuanto valen las variables min y max?
  • a=105.3   b=10.2 cuanto valen las variables min y max?

En algunas programas se pueden llegar a observar este operador ternario en el #define.

    #define max (a,b) (((a) > (b)) ? (a) : (b))

De este ejemplo sólo nos interesa la parte de la derecha. La interpretación es: si "a" es mayor que "b", se debe evaluar "a", en caso contrario evaluar "b", en resumen, evalúa siempre el máximo!!