Precedência de operadores no Visual Basic
Quando várias operações ocorrem em uma expressão, cada parte é avaliado e resolvido em uma ordem predeterminada chamada precedência de 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 concatenação que a ordem de precedência descrita na seção seguinte e todos têm precedência maior do que a comparação, lógica e os operadores bit a bit.
Todos os operadores de comparação têm a mesma precedência e tudo o que tem precedência maior do que os operadores lógicas e bit a bit, mas menor precedência que os operadores aritméticos e concatenação.
Os operadores lógicos e bit a bit tem a ordem de precedência descrita na seção seguinte e todos têm menor precedência que a aritmética de concatenação e operadores de comparação.
Operadores com a mesma precedência são avaliados da esquerda para a direita na ordem em que aparecem na expressão.
Ordem de precedência
Operadores são avaliadas na ordem de precedência a seguir:
Aritmética e operadores de concatenação
Exponenciação (^)
Unary identity and negation (+, –)
Multiplicação e divisão de ponto flutuante (*, /)
Divisão inteira (\)
Módulo aritmético (Mod)
Addition and subtraction (+, –), string concatenation (+)
String ( concatenação&)
Aritmética bit deslocar (<<, >>)
Operadores de Comparação
Todos os operadores de comparação (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf... Is)
Operadores lógicas e bit a bit
Negação (Not)
Conjunto (And, AndAlso)
Inclusive disjunção (Or, OrElse)
Disjunção exclusiva (Xor)
Comentários
The = operador é apenas o igualdade operador de comparação, não o operador de atribuição.
O operador de concatenação de string (&) não é um operador aritmético, mas na prioridade é agrupado com os operadores aritméticos.
The Is e IsNot os operadores são operadores de comparação de referência de objeto. Eles não comparar os valores de dois objetos; eles verificam apenas para determinar se duas variáveis de objeto consultem mesma instância do objeto.
Associatividade de operadores
Quando operadores de mesma precedência aparecem juntos em uma expressão, por exemplo, multiplicação e divisão, o compilador avalia cada operação sistema autônomo encontrá-lo da esquerda para a direita.O exemplo a seguir ilustra isto:
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 for avaliada a divisão 96 / 8 (que resultados em 12) e, em seguida, a divisão 12 / 4, que resultados em três. Porque o compilador avalia as operações para n1 da esquerda para a direita, a avaliação é a mesma ordem explicitamente é indicada para n2. Ambos os n1 e n2 tem um resultado de três. Por contraste, n3 possui um resultado de 48, porque os parênteses forçar o compilador para avaliar 8 / 4 primeiro.
Por causa desses comportamentos, operadores são considerados associação esquerda in Visual Basic.
Substituição de precedência e associação
Você pode usar parênteses para forçar algumas partes de uma expressão seja avaliada antes de outros.Isso pode substituir a ordem de precedência e associatividade de operadores à esquerda.Visual Basic sempre executa operações que são colocadas entre parênteses antes daqueles fora. No entanto, entre parênteses, ele mantém comum precedência e associatividade de operadores, a menos que você use parênteses dentro dos parênteses. O exemplo a seguir ilustra isto:
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.
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.
Consulte também
Conceitos
Operadores e expressões em Visual Basic