Operadores de asignación

Los operadores de asignación atribuyen a una variable – es decir, depositan en la zona de memoria correspondiente a dicha variable – el resultado de una expresión o el valor de otra variable (en realidad, una variable es un caso particular de una expresión).

El operador de asignación más utilizado es el operador de igualdad (=), que no debe ser confundido con la igualdad matemática. Su forma general es:

nombre_de_variable = expresión;

operadores_asignacion_1

Un ejemplo de utilización sería:

variable = variable + 1;

operadores_asignacion_2

Así pues, una variable puede aparecer a la izquierda y a la derecha del operador (=). Sin embargo, a la izquierda del (=) no puede haber una expresión: tiene que ser necesariamente el nombre de una variable. Es incorrecto, por tanto, escribir algo así como:

a + b = c;

Existen otros operadores de asignación:

tabla_operadores_asignacion

Los operadores tienen que ser de tipo primitivo. Veamos algunos ejemplos con estos operadores:

ejemplo_operadores

El operador de incremento n++ y ++n producen el mismo resultado, lo mismo que para el operador de decremento.

Cuando se asigna a una variable una expresión en la que intervienen operadores de incremento o de decremento, el resultado difiere según se utilicen estos operadores como sufijo o prefijo. Si se usa como prefijo (++n) primero se realiza los incrementos o decrementos y después la asignación. Por ejemplo, y = ++x equivale a y = (x += 1).

Si en cambio se utilizan como sufijo (n++), el valor asignado corresponde a la evaluación de la expresión antes de aplicar los incrementos o decrementos. Por ejemplo, y = x++ equivale a y = (t = x, x += 1, t), suponiendo que t es una variable del mismo tipo que x. Más adelante veremos el operador coma (,).

 Ejercicios

  1. Según estos valores:
    ejercicio1haz un programa que muestre lo siguiente:salida_ejercicio1
  2. Haz un programa que muestre por pantalla lo siguiente:ejercicio2

Vamos a comprobar el resultado para el primer ejercicio:

enunciado_ejercicio2

Veamos la evaluación de esta expresión mediante el siguiente programa. Observaremos que en el cálculo intervienen los valores de b sin incrementar y de c decrementando, con lo que el resultado será x igual a 30:

 listado_ejercicio2Una expresión de la complejidad de la anterior equivale a calcular la misma expresión sin operadores ++ y , pero incrementando/decrementando antes las variables afectadas por ++ y como prefijo de incrementado/decrementado después las variables afectadas por ++ y como sufijo. El programa anterior quedaría:

listado_ejercicio2_bis

Mostrará el mismo resultado anterior:

salida_ejercicio1

La aplicación de la regla anterior se complica cuando una misma variable aparece en la expresión, afectada varias veces por los operadores ++ y (incluso, reutilizada a la izquierda del signo igual). Por ejemplo:

listado_ejercicio4

Cuando aplicamos la regla anterior en un caso como éste, debemos tener en cuenta que los incrementos/decrementos como prefijo afectan a los cálculos que le siguen en la propia expresión; por eso habrá que intercalarlos en el lugar adecuado.

salida_ejercicio4

En cambio, los incrementos/decrementos como sufijo se aplican igual que antes, al final. En este ejemplo realizamos los mismos cálculos que en la expresión anterior:

listado_ejercicio5

Ejecutando el programa:

salida_ejercicio5

Éste código es mucho más fácil de entender que la expresión equivalente anterior, y también menos propenso a introducir errores, por lo que se recomienda esta forma de trabajar.

atras2

 

 

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.