Operadores
Los operadores de Solidity permiten realizar operaciones matemáticas, lógicas, de comparación, de asignación entre otras. Comprender estos operadores es fundamental para el desarrollo efectivo de contratos inteligentes.
Aritméticos
Suma
+
Suma dos operandos
Resta
-
Resta el segundo operando del primero
Multiplicación
*
Multiplica los operandos
División
/
Divide el numerador por el denominador
Módulo
%
Da como resultado el residuo de una división
Incremento
++
Incrementa un valor entero en uno
Decremento
—
Reduce un valor entero en uno
Ejemplo
Relacionales
Utiliza estos operadores para comparar dos valores.
Igual
==
Compara si los valores son iguales. Si lo son, devuelve verdadero (true).
Diferente
!=
Compara si los valores son diferentes. Si lo son, devuelve verdadero (true).
Mayor que
>
Determina si el valor de la izquierda es mayor que el de la derecha. Devuelve true si es así.
Menor que
<
Determina si el valor de la izquierda es menor que el de la derecha. Devuelve true si es así.
Mayor o igual que
>=
Determina si el valor de la izquierda es mayor o igual que el de la derecha. Devuelve true si es así.
Menor o igual que
<=
Determina si el valor de la izquierda es menor o igual que el de la derecha. Devuelve true si es así.
Ejemplo
Lógicos
Combinan condiciones para determinar un valor lógico resultante.
AND
&&
Devuelve verdadero (true) si ambas condiciones son verdaderas y falso (false) si al menos una es falsa.
OR
NOT
!
Devuelve verdadero si la condición no se ha satisfecho.
Ejemplo
De asignación
Permiten asignar un valor a una variable. Al lado derecho del operador se ubica un valor y al lado izquierdo una variable.
Asignación simple
=
Se asigna el valor de la derecha a la variable a la izquierda del operador.
Asignación suma
+=
Añade el operando de la derecha al de la izquierda, luego asigna el resultado al operando de la izquierda.
Asignación resta
-=
Resta el operando de la derecha al de la izquierda, luego asigna el resultado al operando de la izquierda.
Asignación multiplicación
*=
Multiplica ambos operandos, luego asigna el resultado al operando de la izquierda.
Asignación división
/=
Divide el operando de la izquierda por el de la derecha, luego asigna el resultado al operando de la izquierda.
Asignación módulo
%=
Divide el operando de la izquierda por el de la derecha, luego asigna el residuo al operando de la izquierda.
Ejemplo
Sugerencia: Lleva este ejemplo a Remix y fíjate qué pasa con el valor de **first
**cuando ejecutas cada una de las funciones.
Bitwise
Son operadores utilizados para realizar operaciones a nivel de bit.
Bitwise AND
&
Se aplica un operador lógico AND a los operandos enteros a nivel de cada bit.
Bitwise OR
Bitwise XOR
^
Se aplica un operador lógico XOR a los operandos enteros a nivel de cada bit.
Bitwise NOT
~
Se aplica un operador lógico NOT al operando a nivel de cada bit.
Desplazamiento izquierdo
<<
Los bits del primer operando se desplazan hacia la izquierda un número de posiciones indicada por el segundo operando.
Desplazamiento derecho
>>
Los bits del primer operando se desplazan hacia la derecha un número de posiciones indicada por el segundo operando.
Para entender estas funciones veamos unos ejemplos de cómo se hacen operaciones a nivel de bit o binario.
Para expresar un número en binario sólo utilizamos 0 y 1. Cada posición del número binario representa una potencia de 2. Así un 1 en la primera posición de la derecha es 2^0 = 1, en la segunda 2^1 = 2, en la tercera 2^2 = 4, en la cuarta 2^3 = 8, y así sucesivamente.
Supongamos que tenemos dos valores x e y:
x = 12, y = 5, que debemos expresar en binario para hacer operaciones bitwise.
x = 12 = 8 + 4 + 0 + 0 = 1100 (binario)
y = 5 = 0 + 4 + 0 + 1 = 0101 (binario)
Si realizamos la operación AND a nivel de bit tendríamos lo siguiente:
x & y = 0100 = 0 + 4 + 0 + 0 = 4
Si realizamos la operación OR a nivel de bit:
x | y = 1101 = 8 + 4 + 0 + 1 = 13
Si realizamos la operación XOR a nivel de bit, que es uno cuando uno de los operandos es 1:
x ^ y = 1001 = 8 + 0 + 0 + 1 = 9
Si realizamos la operación NOT a x a nivel de bit, lo que implica cambiar los ceros por uno y viceversa:
NOT x = 0011 = 0 + 0 + 2 + 1 = 3
Si desplazamos x hacia la izquierda dos posiciones:
x = 12 = 1100 (binario)
x << 2 = 110000 = 48
Si desplazamos x hacia la derecha dos posiciones:
x = 12 = 1100 (binario)
x >> 2 = 0011 = 3
Ejemplo. Despliega este contrato y prueba si los valores para x = 12, y = 5 coinciden con los resultados anteriores. Prueba con otros valores también.
Condicional
Es un operador ternario que evalúa inicialmente una expresión y ejecuta una acción si es verdadera u otra si es falsa.
El formato del operador ternario es el siguiente:
Ejemplo
Last updated
Was this helpful?