Каков порядок приоритетов операторов в Visual Basic 6.0?

Каков порядок приоритетов операторов в Visual Basic 6.0 (VB6)?

В частности, для логических операторов.

Ответ 1

Порядок старшинства арифметической операции

  1. ^
  2. - (одинарное отрицание)
  3. *, /
  4. \
  5. Mod
  6. +, - (двоичное сложение/вычитание)
  7. &

Порядок приоритета операции сравнения

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

Порядок приоритета логической операции

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

Источник: Sams Учите себя Visual Basic 6 в течение 24 часов - Приложение A: Приоритет оператора

Ответ 2

Это зависит от того, находитесь ли вы в отладчике. В самом деле. Ну вроде.

Скобки на первом месте, конечно. Тогда арифметическое (+, -, *,/и т.д.). Затем сравнения (>, <, = и т.д.). Тогда логические операторы. Хитрость в том, что порядок выполнения в пределах данного уровня приоритета не определен. Дано следующее выражение:

If A < B And B < C Then

Вам гарантировано, что оба < оператора неравенства будут оценены перед логическим And сравнением. Но вам не гарантировано, какое сравнение неравенства будет выполнено первым.

IIRC, отладчик выполняется слева направо, но скомпилированное приложение выполняется справа налево. Я мог бы иметь их задом наперед (это было давно), но главное, что они разные. Фактический приоритет не меняется, но порядок выполнения может измениться.

Ответ 3

Используйте скобки


РЕДАКТИРОВАТЬ: Это мой совет для нового кода! Но Оскар читает чужой код, поэтому должен как-то это понять. Я предлагаю тему руководства VBA приоритет оператора. VBA на 99% эквивалентен VB6 - и оценка выражения на 100% эквивалентна. Я вставил информацию о логическом операторе здесь.

Логические операторы оцениваются в следующем порядке приоритета:

Not   
And   
Or   
Xor   
Eqv   
Imp   

В теме также объясняется приоритет для сравнения и арифметических операторов.

Я бы посоветовал, когда вы выяснили приоритет, ставите в скобки, если нет веской причины не редактировать код.