Qual é a ordem de precedência do operador no Visual Basic 6.0?

StackOverflow https://stackoverflow.com/questions/55206

  •  09-06-2019
  •  | 
  •  

Pergunta

Qual é a ordem de precedência do operador no Visual Basic 6.0 (VB6)?

Em particular, para os operadores lógicos.

Foi útil?

Solução

Ordem de precedência de operações aritméticas

  1. ^
  2. - (negação unária)
  3. *, /
  4. \
  5. Mod
  6. +, - (adição/subtração binária)
  7. &

Ordem de precedência da operação de comparação

  1. =
  2. <>
  3. <
  4. >
  5. <=
  6. >=
  7. Like, Is

Ordem de precedência de operação lógica

  1. Not
  2. And
  3. Or
  4. Xor
  5. Eqv
  6. Imp

Fonte: Sams ensina-se Visual Basic 6 em 24 horas - Apêndice A:operador precedente

Outras dicas

Depende se você está ou não no depurador. Realmente. Bem, mais ou menos.

Os parênteses vêm primeiro, é claro.Depois aritmética (+,-,*,/, etc).Depois comparações (>, <, =, etc).Depois os operadores lógicos.O truque é que a ordem de execução dentro de um determinado nível de precedência não está definida.Dada a seguinte expressão:

If A < B And B < C Then

você está garantido o < operadores de desigualdade serão avaliados antes do lógico And comparação.Mas não há garantia de qual comparação de desigualdade será executada primeiro.

IIRC, o depurador é executado da esquerda para a direita, mas o aplicativo compilado é executado da direita para a esquerda. Eu poderia tê-los invertidos (já faz muito tempo), mas o importante é que são diferentes.A precedência real não muda, mas a ordem de execução pode.

Use parênteses


EDITAR:Esse é o meu conselho para o novo código!Mas Oscar está lendo o código de outra pessoa, então precisa descobrir de alguma forma.Sugiro o tópico do manual VB6 operador precedente.Infelizmente este tópico não parece estar no Manual on-line MSDN VB6, então colarei as informações do operador lógico aqui.Se você instalou a ajuda do VB6 (a biblioteca MSDN), você a terá em sua máquina.

Os operadores lógicos são avaliados na seguinte ordem de precedência:

Not   
And   
Or   
Xor   
Eqv   
Imp   

O tópico também explica a precedência para operadores de comparação e aritméticos.

Eu sugeriria que, depois de descobrir a precedência, você colocasse parênteses, a menos que haja um bom motivo para não editar o código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top