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 a precedência deoperador.
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 tem a ordem de precedência, descrita na seção a seguir e todos têm precedência maior do que a comparação, lógicos e operadores bit a bit.
Tudo operadores de comparação possuem a mesma precedência e tudo o que tem precedência maior do que os operadores lógicos 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 a seguir e todos têm menor precedência que a aritmética, 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 seguinte ordem de precedência:
Operadores de concatenação e aritmética
Exponenciação (^)
Unário identidade e a negação (+, –)
Multiplicação e flutuante-ponto de divisão (*, /)
Divisão inteira (\)
Módulo aritmético (Mod)
Adição e subtração (+, –), concatenação de seqüência de caracteres (+)
Concatenação de seqüência de caracteres (&)
Aritmética bit deslocar (<<, >>)
Comparison Operators
Tudo comparison operators (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf...Is)
Operadores bit a bit e lógicas
Negação (Not)
Conjunto (And, AndAlso)
Inclusive disjunção (Or, OrElse)
DisjunçãoExclusivo (Xor)
Comments
O = operador é apenas a comparação de igualdade operador, não a atribuição de operador.
O operador de concatenação de seqüência de caracteres (&) não é um operadorde aritmética, mas na precedência agrupado com os operadores aritméticos.
O Is e IsNot operadores são operadores de comparação do objeto referência. Eles não comparar os valores dos dois objetos; eles verificam apenas para determinar se duas variáveis de objeto referência para a mesma instância do objeto .
Associatividade
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, como ele encontra da esquerda para a direita. The following example illustrates this.
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 é avaliada a divisão de 96 / 8 (que resulta em 12) e, em seguida, a divisão de 12 / 4, que resulta em três. Porque o compilador avalia as operações para n1 da esquerda para a direita, a avaliação é o mesmo quando a ordem é explicitamente indicada para n2. Ambos n1 e n2 tem um resultado de três. Por outro lado, n3 tem um resultado de 48, porque os parênteses obrigam o compilador para avaliar 8 / 4 primeiro.
Devido esse comportamento, operadores são considerados esquerda associativa na Visual Basic.
Substituição de precedência e associatividade
Você pode usar parênteses para forçar algumas partes de uma expressão a ser avaliada antes de outros. Isso pode substituir a ordem de precedência e a associatividade à esquerda. Visual Basicsempre executa operações que são colocadas entre parênteses antes daquelas fora. No entanto, entre parênteses, ele mantém comum precedência e associatividade de operadores, a menos que você usar parênteses dentro dos parênteses. The following example illustrates this.
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
Referência
Operador TypeOf (Visual Basic)
Operadores listados por Funcionalidade (Visual Basic)