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

Prioridade e Associatividade dos Operadores Swift

Neste artigo, você vai aprender as regras usadas para calcular expressões com operadores e operandos.

Prioridade do operador Swift

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.

Tabela de prioridade de operadores Swift

A tabela a seguir listaOperadorA prioridade é exibida na tabela. Quanto mais alto, maior é a prioridade.

Grupo de prioridade da biblioteca padrão Swift (da mais alta para a mais baixa prioridade)
Grupo de operadoresExemplo
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|= %= /= &<<= &>>= &= *= >>= <<= ^= += -=

Exemplo1Prioridade do operador Swift

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.

Executar passo
Passo
OperadorExpressãoO valor retornado pela expressão
1*5 * 525
2+4 + 2529
3=print(x)29

Exemplo2Prioridade do operador Swift com operador de atribuição complexa

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))

Executar passo
PassoOperadorExpressãoO valor retornado pela expressão
1=var y = 1515
2*2 * 36
3--10-64
4+ =15 + 419

Associatividade dos operadores Swift

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.

Tabela de combinação de operadores

A tabela a seguir mostra a combinação e a prioridade dos operadores Swift.

Combinação padrão da biblioteca Swift (da mais alta para a mais baixa prioridade)
Grupo de operadoresExemploComutatividade
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

Exemplo3:Prioridade de Combinação de Operadores Swift

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.