Каков порядок приоритетов операторов в Visual Basic 6.0 (VB6)?
В частности, для логических операторов.
Каков порядок приоритетов операторов в Visual Basic 6.0 (VB6)?
В частности, для логических операторов.
^
-
(одинарное отрицание)*
, /
\
Mod
+
, -
(двоичное сложение/вычитание)&
=
<>
<
>
<=
>=
Like
, Is
Not
And
Or
Xor
Eqv
Imp
Источник: Sams Учите себя Visual Basic 6 в течение 24 часов - Приложение A: Приоритет оператора
Это зависит от того, находитесь ли вы в отладчике. В самом деле. Ну вроде.
Скобки на первом месте, конечно. Тогда арифметическое (+, -, *,/и т.д.). Затем сравнения (>, <, = и т.д.). Тогда логические операторы. Хитрость в том, что порядок выполнения в пределах данного уровня приоритета не определен. Дано следующее выражение:
If A < B And B < C Then
Вам гарантировано, что оба <
оператора неравенства будут оценены перед логическим And
сравнением. Но вам не гарантировано, какое сравнение неравенства будет выполнено первым.
IIRC, отладчик выполняется слева направо, но скомпилированное приложение выполняется справа налево. Я мог бы иметь их задом наперед (это было давно), но главное, что они разные. Фактический приоритет не меняется, но порядок выполнения может измениться.
РЕДАКТИРОВАТЬ: Это мой совет для нового кода! Но Оскар читает чужой код, поэтому должен как-то это понять. Я предлагаю тему руководства VBA приоритет оператора. VBA на 99% эквивалентен VB6 - и оценка выражения на 100% эквивалентна. Я вставил информацию о логическом операторе здесь.
Логические операторы оцениваются в следующем порядке приоритета:
Not And Or Xor Eqv Imp
В теме также объясняется приоритет для сравнения и арифметических операторов.
Я бы посоветовал, когда вы выяснили приоритет, ставите в скобки, если нет веской причины не редактировать код.