English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Prioridad y asociatividad de los operadores en Swift

En este artículo, conocerá las reglas para calcular expresiones con operadores y operandos.

Prioridad de los operadores de Swift

La prioridad de los operadores es un conjunto de reglas utilizadas para calcular una expresión matemática dada. Cuando se utilizan múltiples operadores en una expresión, cada parte se calcula en un orden específico llamado prioridad del operador. Algunos operadores tienen una prioridad superior a otros, lo que afecta la forma en que se calcula la expresión.

Tabla de prioridad de operadores de Swift

La siguiente tabla enumera losOperadorSu prioridad. Cuanto más alto se muestra en la tabla, mayor es su prioridad.

Grupo de prioridad de la biblioteca estándar de Swift (de alto a bajo prioridad)
Grupo de operadoresEjemplo
Prioridad de cambio de bits>> &<< &>> >>
Prioridad del operador de multiplicación&* % & * /
Prioridad de adición| &+ &- + – ^
Prioridad de formación de rango..< …
Prioridad de conversión de tipoes como
Prioridad del operador de conjunción??
Prioridad de comparación!= > < >= <= === ===
Prioridad de asociatividad lógica&&
Prioridad de disyunción lógica||
Prioridad predeterminada~>
Prioridad de operador ternario?:
Prioridad de funciones flecha( )
Prioridad de asignación|= %= /= &<<= &>>= &= *= >>= <<= ^= += -=

Ejemplo1Prioridad de los operadores de Swift

let x = 4 + 5 * 5
print(x)

Cuando ejecute el programa anterior, la salida será:

29

Si se lee la expresión desde la izquierda a la derecha en el ejemplo anterior, se podría esperar que la salida sea45. Pero, el operador de multiplicación tiene una prioridad superior al operador de adición, por lo que la expresión4 + 5 * 5Se evalúa como4 + (5 * 5) por lo que se imprime (x) en la pantalla29.

Ejecutar paso
Paso
OperadorExpresiónEl valor devuelto por la expresión
1*5 * 525
2+4 + 2529
3=print(x)29

Ejemplo2Prioridad de los operadores de Swift con operadores de asignación compleja

var y = 15
y += 10 - 2 * 3
print(y)

Cuando ejecute el programa anterior, la salida será:

19

En el ejemplo anterior, la expresión var y = 15Asignado a15.

En la siguiente expresión y + = 10-2 * 3en la que el operador de multiplicación tiene una prioridad superior al operador de asignación compuesta de restación+ =)

Por lo tanto, la expresión y + = 10-2 * 3 Se calcula como y = y + (10-(2 * 3))

Ejecutar paso
PasoOperadorExpresiónEl valor devuelto por la expresión
1=var y = 1515
2*2 * 36
3--10-64
4+ =15 + 419

Asociatividad de los operadores de Swift

A pesar de que existen reglas predefinidas definidas por la prioridad del operador para evaluar expresiones, es posible que desee saber qué sucede si hay múltiples operadores con la misma prioridad. La asociatividad de los operadores define cómo se combinan los operadores con la misma prioridad.

En Swift, los operadores pueden ser asociativos a la izquierda, a la derecha o no asociativos. Cuando se utilizan en un expresión en orden, los operadores asociativos a la izquierda, los operandos se agrupan desde la izquierda, los operadores asociativos a la derecha y los operadores no asociativos no tienen un comportamiento definido.

Tabla de asociatividad de operadores

La siguiente tabla muestra la asociatividad y la prioridad de los operadores de Swift.

Asociatividad de la biblioteca estándar de Swift (de alto a bajo prioridad)
Grupo de operadoresEjemploAsociatividad
Prioridad de desplazamiento>>&<<&>> >>Ninguno
Prioridad del operador de multiplicación&*%&* /Izquierda
Prioridad de adición| &+&-+-^Izquierda

Prioridad de formación de rango

.. <...Ninguno
Prioridad de conversión de tipoes un
Ninguno
Prioridad del operador de conjunción??Derecha
Prioridad de comparación!=> <> = <= === ===Ninguno

Prioridad de conjunción lógica

&&Izquierda
Prioridad de disyunción lógica||Izquierda
Prioridad predeterminada~>Ninguno
Prioridad de operador ternario?:Derecha
Prioridad de funciones flecha()Derecha
Prioridad de asignación| =%= / =&<< =&>> =&= * = >> = << = ^ =Derecha

Ejemplo3:Asociatividad de operadores de Swift

let x =  40  / 2 * 10
print(x)

Cuando ejecute el programa anterior, la salida será:

200

En el programa anterior, las expresiones se calculan de izquierda a derecha, porque los operadores pertenecen al grupo de precedencia de multiplicación y tienen asociatividad izquierda. Por lo tanto, la operación de división se ejecutará primero, y el resultado será200. Si desea ejecutar primero la multiplicación, ¿qué debe hacer? Necesita cambiar2 * 10Encuadre las expresiones en corchetes grandes (), como se muestra a continuación:

let x =  40  / (2 * 10)
print(x)

Cuando ejecute el programa anterior, la salida será:

2

No es necesario que recuerde la tabla de prioridad y asociatividad. En la mayoría de los casos, la prioridad y asociatividad de los operadores ya son muy significativas. Si tiene alguna duda, puede usar esta tabla como referencia en cualquier momento. Además, es mejor usar paréntesis para que el código sea más fácil de entender.