English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, você vai aprender as regras usadas para calcular expressões com operadores e operandos.
A prioridade do operador é o conjunto de regras usado para calcular a expressão matemática dada. Quando vários operadores são usados em uma única expressão, cada parte é calculada em uma ordem específica chamada prioridade do operador. Alguns operadores têm uma prioridade maior do que outros, o que afeta a forma como a expressão é calculada.
A tabela a seguir listaOperadorA prioridade é exibida na tabela. Quanto mais alto, maior é a prioridade.
Grupo de operadores | Exemplo |
Prioridade de mudança de bits | >> &<< &>> >> |
Prioridade da multiplicação | &* % & * / |
Prioridade da adição | | &+ &- + – ^ |
Prioridade da formação de intervalo | ..< … |
Prioridade da conversão de tipo | é como |
Prioridade do operador de concatenação de vazios | ?? |
Comparação de prioridade | != > < >= <= === === |
Prioridade de combinação lógica | && |
Prioridade de Disjunção Lógica | || |
Prioridade Padrão | ~> |
Prioridade de Operador Ternário | ?: |
Prioridade de Função de Seta | ( ) |
Prioridade de Atribuição | |= %= /= &<<= &>>= &= *= >>= <<= ^= += -= |
let x = 4 + 5 * 5 print(x)
Quando você executar o programa acima, a saída será:
29
No exemplo acima, se ler a expressão da esquerda para a direita, espera-se que a saída seja45. No entanto, o operador de multiplicação tem prioridade sobre o operador de adição, então a expressão4 + 5 * 5Calculado como4 + (5 * 5) portanto, a saída impressa na tela é29.
Passo | Operador | Expressão | O valor retornado pela expressão |
---|---|---|---|
1 | * | 5 * 5 | 25 |
2 | + | 4 + 25 | 29 |
3 | = | print(x) | 29 |
var y = 15 y += 10 - 2 * 3 print(y)
Quando você executar o programa acima, a saída será:
19
No exemplo acima, a expressão var y = 15Atribuído a15.
Na próxima expressão y + = 10-2 * 3não, o operador de multiplicação tem prioridade sobre o operador de atribuição composta de subtração (+ =)
Portanto, a expressão y + = 10-2 * 3 Calculado como y = y + (10-(2 * 3))
Passo | Operador | Expressão | O valor retornado pela expressão |
1 | = | var y = 15 | 15 |
2 | * | 2 * 3 | 6 |
3 | -- | 10-6 | 4 |
4 | + = | 15 + 4 | 19 |
Embora existam regras pré-definidas definidas pela prioridade do operador para avaliar expressões, você pode se perguntar o que acontece se houver múltiplos operadores com a mesma prioridade. A associatividade do operador define como os operadores com a mesma prioridade são combinados.
Em Swift, os operadores podem ser esquerdo, direito ou não ter combinação. Quando usados em sequência em uma expressão, os operadores de combinação esquerda agrupam operandos do lado esquerdo da expressão, os operadores de combinação direita e os operadores não relacionados não têm comportamento definido.
A tabela a seguir mostra a combinação e a prioridade dos operadores Swift.
Grupo de operadores | Exemplo | Comutatividade |
---|---|---|
Prioridade do deslocamento | >>& <<& >> | Nenhum |
Prioridade da multiplicação | &*%&* / | Esquerda |
Prioridade da adição | | &+&-+-^ | Esquerda |
Prioridade da formação de intervalo | .. <... | Nenhum |
Prioridade da conversão de tipo | é um | Nenhum |
Prioridade do operador de concatenação de vazios | ?? | Direita |
Comparação de prioridade | !=> <> = <= === === | Nenhum |
Prioridade de Conjunção Lógica | && | Esquerda |
Prioridade de Disjunção Lógica | || | Esquerda |
Prioridade Padrão | ~> | Nenhum |
Prioridade de Operador Ternário | ?: | Direita |
Prioridade de Função de Seta | () | Direita |
Prioridade de Atribuição | | =%= / =&<< =&>> =&= * = >> = << = ^ = | Direita |
let x = 40 / 2 * 10 print(x)
Quando você executar o programa acima, a saída será:
200
No programa acima, a expressão é calculada da esquerda para a direita, porque os operadores pertencem ao grupo de prioridade de multiplicação e têm associatividade à esquerda. Portanto, a operação de divisão é executada antecipadamente, resultando em200. Se você quiser executar primeiro a multiplicação, o que precisa fazer? Precisa mover2 * 10Expressões empacotadas em chaves {} grandes, conforme mostrado a seguir:
let x = 40 / (2 * 10) print(x)
Quando você executar o programa acima, a saída será:
2
Você não precisa lembrar da tabela de prioridade e associatividade. Em muitos casos, a prioridade e a associatividade dos operadores já são muito significativas. Caso haja dúvidas, você pode usar essa tabela como referência a qualquer momento. Além disso, é melhor usar parênteses para tornar o código mais fácil de entender.