programacion-operadores-asignacion

Operadores de asignación

Los operadores de asignación son utilizados para asignar valores a variables. El operador de asignación más común, por amplia diferencia, es el operador =.

OperadorEjemplo
Asignación (=)x = 5

Este operador

  • Calcula el valor de la expresión a su derecha
  • Lo asigna a la variable de la izquierda

Por ejemplo, podemos asignar el valor 10 a una variable llamada x de la siguiente manera:

x = 10

A partir de ese momento, la variable x contiene el valor 10 y podemos utilizarlo en nuestro programa.

A la derecha puede haber cualquier expresión que sea evaluable a un valor. Por ejemplo, esto también sería valido.

a = 10
x = 2 + 3 + a

Operadores de asignación compuestos

Además del operador de asignación básico =, muchos lenguajes de programación ofrecen operadores de asignación compuestos, que combinan la asignación con otra operación aritmética.

OperadorEjemplo
Asignación con suma (+=)x += 3 (equivalente a x = x + 3)
Asignación con resta (-=)x -= 2 (equivalente a x = x - 2)
Asignación con multiplicación (*=)x *= 4 (equivalente a x = x * 4)
Asignación con división (/=)x /= 2 (equivalente a x = x / 2)
Asignación con módulo (%=)x %= 3 (equivalente a x = x % 3)

Estos operadores son una forma abreviada de escribir operaciones comunes y pueden ayudar a que nuestro código sea más conciso y legible.

Veamos un ejemplo en JavaScript utilizando el operador +=:

let x = 5;
x += 3; // equivalente a x = x + 3

console.log(x); // imprimirá 8

En este caso, el operador += suma 3 al valor actual de la variable x y luego asigna el resultado de vuelta a x. Como resultado, x se actualiza a 8.

Ejemplos de operadores de asignación en distintos lenguajes

Como decíamos, en prácticamente todos los lenguajes el operador de asignación es el signo igual =.

De igual forma, los operadores de asignación +=, -=, *= y /= son prácticamente un estándar.

Por ejemplo, así se emplean los operadores de asignación en en C++, C# o Java,

// operador asignacion
int x = 5;

// operadores compuestos
x += 3;  // Equivalente a x = x + 3
x -= 2;  // Equivalente a x = x - 2
x *= 4;  // Equivalente a x = x * 4
x /= 2;  // Equivalente a x = x / 2
x %= 7;  // Equivalente a x = x % 7

Cuyo uso es idéntico en JavaScript,

// operador asignacion
let x = 5;

// operadores compuestos
x += 3;  // Equivalente a x = x + 3
x -= 2;  // Equivalente a x = x - 2
x *= 4;  // Equivalente a x = x * 4
x /= 2;  // Equivalente a x = x / 2
x %= 7;  // Equivalente a x = x % 7

O, por ejemplo, en Python,

# operador asignacion
x = 5

# operadores compuestos
x += 3  # Equivalente a x = x + 3
x -= 2  # Equivalente a x = x - 2
x *= 4  # Equivalente a x = x * 4
x /= 2  # Equivalente a x = x / 2
x %= 7  # Equivalente a x = x % 7

Como vemos, el uso de los operadores es idéntico. En los ejemplos únicamente cambia la forma de declarar la variable, que no tiene nada que ver con el tema de hoy que son los operadores.

Buenas prácticas y consejos de limpieza Consejos

En muchos lenguajes (no en todos) las operaciones de asignación devuelven true como resultado de la asignación.

Esto da lugar a un error muy habitual, si nos confundimos y ponemos = en lugar de ==

if(a = 3) // esto siempre se cumple
{ }

En este caso, no estamos comparando a con 3. Estamos guardando 3 en a, y evaluando el resultado como condición. Aquí tenemos dos efectos indeseados:

  • Estamos guardando un valor que no queríamos en una variable
  • Además el condicional se cumple siempre, porque = siempre devuelve true.

Es decir, tened cuidado de no equivocaros y poner =en lugar de ==por error.