Datos, Operadores y Expresiones
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!!