English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, conocerá las reglas para calcular expresiones con operadores y operandos.
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.
La siguiente tabla enumera losOperadorSu prioridad. Cuanto más alto se muestra en la tabla, mayor es su prioridad.
Grupo de operadores | Ejemplo |
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 tipo | es 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 | |= %= /= &<<= &>>= &= *= >>= <<= ^= += -= |
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.
Paso | Operador | Expresión | El valor devuelto por la expresión |
---|---|---|---|
1 | * | 5 * 5 | 25 |
2 | + | 4 + 25 | 29 |
3 | = | print(x) | 29 |
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))
Paso | Operador | Expresión | El valor devuelto por la expresión |
1 | = | var y = 15 | 15 |
2 | * | 2 * 3 | 6 |
3 | -- | 10-6 | 4 |
4 | + = | 15 + 4 | 19 |
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.
La siguiente tabla muestra la asociatividad y la prioridad de los operadores de Swift.
Grupo de operadores | Ejemplo | Asociatividad |
---|---|---|
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 tipo | es 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 |
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.