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

Referência

= Operador (Visual Basic)

Operador Is (Visual Basic)

Operador IsNot

Operador Like (Visual Basic)

Operador TypeOf (Visual Basic)

Operadores listados por Funcionalidade