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
Operación | Operador | Descripción |
---|---|---|
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.
Relación | Operador | Descripción |
---|---|---|
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.
Función lógica | Operador | Descripción |
---|---|---|
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.
Tipo | Operador | Descripción |
---|---|---|
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.
Tipo | Operador | Descripción |
---|---|---|
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