Asignaciones en C

Atrás

En un diagrama de flujo la asignación se representa mediante un bloque como el de la Figura 1.


Figura 1. Bloque de asignación en un DdF

En esta figura expr representa la parte derecha (r-value) de la asignación, una expresión cuya evaluación dará lugar a un único valor, el resultado de la asignación.

La x de la Figura 1 representa la parte izquierda (l-value) de una asignación, siendo siempre una posición de memoria (una variable).

En C existe la posibilidad de abreviar las asignaciones en las que la variable x implicada esté a la izquierda y a la derecha de la asignación junto a una expresión exp, como se ilustra en la Tabla 1.


Operador Descripción Equivalente Ejemplo
x += exp Suma x = x + exp x += 7
x -= exp Resta x = x - exp x -= b
x *= exp Producto x = x * exp x *= b + 1
x /= exp División x = x / exp x /= 2
x &= exp And bit a bit x = x & exp x &= flg
x |= exp Or bit a bit x = x | exp x |= 0xf7
x >>= exp Desplazamiento a la derecha x = x >> exp x >>= 1
x <<= exp Desplazamiento a la izquierda x = x << exp x <<= 1
Tabla 1. Abreviaturas de asignaciones

Dada una variable x existen cuatro operaciones especiales para incrementarla y decrementarla, como se ilustra en la Tabla 2.


Operador Descripción Equivalente aislado 1 Equivalente aislado 2 Equivalente aislado 3 Valor
++x Preincremento x = x + 1 x++ x += 1 x + 1
--x Predecremento x = x - 1 x-- x -= 1 x - 1
x++ Postincremento x = x + 1 ++x x += 1 x
x-- Postdecremento x = x - 1 --x x -= 1 x
Tabla 2. Asignaciones de incremento y decremento

Tal y como se muestra en esta tabla, aisladamente todas las incrementaciones son equivalentes, al igual que todas las decrementaciones.

En el lenguaje C la asignación es un operador y la operación de asignación puede formar parte de una expresión que sea parte de otra asignación. El valor de una asignación será siempre el de su parte derecha.


Expresión Descripción Valor
x = v; Asignación: x recibe el valor v v
x = x + v; Asignación: x se incrementa en v x + v
x += v; Asignación: x se incrementa en v x + v
++x; Preincremento: x se preincrementa en 1 x + 1
--x; Predecremento: x se predecrementa en 1 x - 1
x++; Postincremento: x se postincrementa en 1 x
x--; Postdecremento: x se postdecrementa en 1 x
y = x += v; Asignaciones: se evalúan de derecha a izquierda; x recibe el valor anterior de x incrementado en v; y recibe el valor anterior de x incrementado en v x + v
Tabla 3. Ejemplos de valor de asignaciones

Atrás