Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando várias operações ocorrem em uma expressão, cada parte é avaliada e resolvida em uma ordem predeterminada chamada precedência do operador.
Regras de precedência
Quando as expressões contêm operadores de mais de uma categoria, elas são avaliadas de acordo com as seguintes regras:
Os operadores aritméticos e de concatenação têm a ordem de precedência descrita na seção a seguir e todos têm precedência maior do que os operadores de comparação, lógicos e bit a bit. Precedência mais alta significa que esses operadores são avaliados primeiro.
Todos os operadores de comparação têm precedência igual e todos têm precedência maior que os operadores lógicos e bits, mas precedência inferior aos operadores aritméticos e de concatenação.
Os operadores lógicos e bit a bit têm a ordem de precedência descrita na seção a seguir e todos têm precedência menor do que os operadores aritméticos, concatenação e comparação.
Operadores com precedência igual são avaliados da esquerda para a direita na ordem em que aparecem na expressão.
Ordem de precedência
Os operadores são avaliados na seguinte ordem de precedência. Os operadores listados primeiro têm precedência mais alta e são avaliados antes dos operadores listados posteriormente:
1. Operador Await
Esperar
2. Operadores aritméticos e concatenação
Exponencialização (^)
Identidade unária e negação (+, –)
Multiplicação e divisão de ponto flutuante (*, /)
Divisão inteiro (\)
Aritmética modular (Mod)
Adição e subtração (+, –)
Concatenação de cadeia de caracteres (&)
Mudança de bit aritmética (<<, >>)
3. Operadores de comparação
Todos os operadores de comparação (=, , <>, <, <=, >, >=, Is, IsNot, LikeTypeOf...Is)
4. Operadores lógicos e bit a bit
Negação (Not)
Conjunção (And, AndAlso)
Disjunção inclusiva (Or, OrElse)
Disjunção exclusiva (Xor)
Comentários
O = operador é apenas o operador de comparação de igualdade, não o operador de atribuição.
O operador de concatenação de cadeia de caracteres (&) não é um operador aritmético, mas, em precedência, é agrupado com os operadores aritméticos.
Os Is operadores e os IsNot operadores são operadores de comparação de referência de objeto. Eles não comparam os valores de dois objetos; eles verificam apenas para determinar se duas variáveis de objeto se referem à mesma instância de objeto.
Capacidade de associação
Quando operadores de precedência igual aparecem juntos em uma expressão, por exemplo, multiplicação e divisão, o compilador avalia cada operação à medida que a encontra da esquerda para a direita. O exemplo a seguir ilustra essa situação.
Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)
A primeira expressão avalia a divisão 96/8 (que resulta em 12) e, em seguida, a divisão 12/4, que resulta em três. Como o compilador avalia as operações da esquerda para n1 a direita, a avaliação é a mesma quando essa ordem é explicitamente indicada para n2. Ambos n1 e n2 têm um resultado de três. Por outro lado, n3 tem um resultado de 48, porque os parênteses forçam o compilador a avaliar 8/4 primeiro.
Devido a esse comportamento, dizem que os operadores são deixados associativos no Visual Basic.
Substituindo precedência e associatividade
Você pode usar parênteses para forçar algumas partes de uma expressão a serem avaliadas antes de outras. Isso pode substituir a ordem de precedência e a associatividade esquerda. O Visual Basic sempre executa operações que estão entre parênteses antes das operações externas. No entanto, dentro dos parênteses, ele mantém precedência e associatividade comuns, a menos que você use parênteses dentro dos parênteses. O exemplo a seguir ilustra essa situação.
Dim a, b, c, d, e, f, g As Double
a = 8.0
b = 3.0
c = 4.0
d = 2.0
e = 1.0
f = a - b + c / d * e
' The preceding line sets f to 7.0. Because of natural operator
' precedence and associativity, it is exactly equivalent to the
' following line. Division and multiplication (/, *) have higher
' precedence than addition and subtraction (+, -), so c / d * e
' is evaluated first, then the addition and subtraction from left to right.
f = (a - b) + ((c / d) * e)
' The following line overrides the natural operator precedence
' and left associativity.
g = (a - (b + c)) / (d * e)
' The preceding line sets g to 0.5.