1. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs OPERADORES Y EXPRESIONES
3.5. Operador Condicional
Objetivos
1. Conocer el operador condicional de C.
Se pueden efectuar operaciones condicionales simples con el operador condicional
(? :). Una expresión que hace uso del operador condicional se denomina expresión con-
dicional. Se puede escribir una instrucción de este tipo en lugar de la instrucción más
tradicional if-else, que se tratará más adelante. Una expresión condicional se escribe
de la forma siguiente:
expresión 1 ? expresión 2 : expresión 3
Cuando se evalúa una expresión condicional, expresión 1 es evaluada primero. Si
expresión 1 es verdadera (si, su valor es no nulo), entonces expresión 2 es evaluada
y éste es el valor de la expresión condicional. Sin embargo, si expresión 1 es falsa (si
su valor es cero), entonces se evalúa expresión 3 y éste es el valor de la expresión
condicional.
Nótese que sólo se evalúa una de las expresiones (expresión 2 o expresión 3) cuan-
do se determina el valor de una expresión condicional.
EJEMPLO 3.1. En la expresión condicional que se muestra a continuación, suponga-
mos que i es una variable entera.
(i < 0)?0 : 100
Se evalúa primero la expresión (i < 0). Si es verdadera (si el valor de i es menor que
0), el valor de toda la expresión condicional es 0. En cualquier otro caso (si el valor de i
no es menor que 0), el valor de toda la expresión condicional es 100.
Supongamos que f y g son variables en coma flotante en la siguiente expresión con-
dicional.
(f < g)?f : g
Esta expresión condicional toma el valor de f si f es menor que g; de otra forma,
la expresión condicional toma el valor de g. En otras palabras, la expresión condicional
devuelve el valor de la menor de las dos variables.
Si los operandos (expresión 2 y expresión 3) son de tipos diferentes, el tipo de
datos de la expresión condicional se determinará de acuerdo con las reglas dadas en la
secciones anteriores.
Pedro Ramírez <pedroramirez22@gmail.com> 1
2. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs OPERADORES Y EXPRESIONES
EJEMPLO 3.2 Supongamos ahora que i es una variable entera y que f y g son
variables en coma flotante. En la expresión condicional
(f < g)?i : f
aparecen operandos de tipo entero y en coma flotante. El tipo de dato de la expresión
condicional será en coma flotante, aun cuando se seleccione el valor de i como valor de
la expresión.
Las expresiones condicionales suelen aparecer en la parte derecha de una instrucción
de asignación simple. Se le asigna al identificador de la izquierda el valor resultante de
la expresión condicional.
EJEMPLO 3.3 La siguiente es una instrucción de asignación que contiene una expre-
sión condicional en la parte de la derecha.
indicador = (i < 0)?0 : 100
Si el valor de i es negativo, se le asignará a indicador el valor 0. Si i no es negativo,
se le asignará a indicador el valor 100.
La siguiente es otra instrucción de asignación que contiene una expresión condicional
en la parte derecha.
min = (f < g)?f : g
Esta instrucción hace que se le asigne a min el menor valor de f y g.
El operador condicional tiene su propia precedencia, justamente superior a los ope-
radores de asignación. La asociatividad es de derecha a izquierda.
La Tabla resume las precedencias de todos los operadores tratados en este capítulo.
Categoría de operador Operadores Asociatividad
operadores unarios − ++ −− ! sizeof(tipo) D → I
multiplicación, división y resto ∗ / % I → D
suma y resta + − I → D
operadores relacionales < <= > >= I → D
operadores de igualdad == ! = I → D
y lógica && I → D
o lógica || I → D
operador condicional ? : D → I
operadores de asignación = + = − = ∗ = / = % = D → I
EJEMPLO 3.4 En la siguiente instrucción de asignación, a, b y c se suponen variables
enteras. En la instrucción aparecen operadores de seis grupos de precedencia distintos.
c+ = (a > 0&&a <= 10)? + +a : a/b;
Pedro Ramírez <pedroramirez22@gmail.com> 2
3. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs OPERADORES Y EXPRESIONES
La instrucción comienza por la evaluación de la expresión compuesta
(a > 0&&a <= 10)
Si esta expresión es cierta, se evalúa la expresión + + a. Si no es así, se evalúa la
expresión a/b.
Finalmente se efectúa la operación de asignación (+ = ) , haciendo que se incremente
c en el valor de la expresión condicional.
Si, por ejemplo, a, b y c tienen los valores 1, 2 y 3, respectivamente, entonces el valor
de la expresión condicional será 2 (porque será evaluada la expresión + + a) y a c se le
asignará el valor 5 (c = 3 + 2).
Por otro lado, si los valores de a, b y c fuesen 50, 10 y 20, respectivamente, entonces
el valor de la expresión condicional sería 5 (porque se evaluaría la expresión a/b) y el
valor de c pasaría a ser 25 (c = 20 + 5).
Cuestiones de Repaso
1. Describir el uso del operador condicional para formar expresiones condicionales.
¿Cómo se evalúa una expresión condicional?
2. ¿Cómo se determina el tipo de una expresión condicional cuando sus operandos
son de tipos diferentes?
3. ¿Cuál es la precedencia del operador condicional en relación con los otros operadores
descritos en este capítulo? ¿Cuál es su asociatividad?
Problemas
1. Un programa en C contiene las siguientes declaraciones y asignaciones iniciales:
int i = 8, j = 5, k;
float x = 0.005, y = -0.01, z;
char a, b, c = ’c’, d = ’d’;
Determinar el valor de cada una de las siguientes expresiones de asignación. Utilizar
para cada expresión el valor inicial asignado a las variables.
a) k = (j == 5)?i : j
b) k = (j > 5)?i : j
c) z = (x >= 0)?x : 0
d) z = (y >= 0)?y : 0
e) a = (c < d)?c : d
f ) i− = (j > 0)?j : 0
Pedro Ramírez <pedroramirez22@gmail.com> 3