Каков порядок приоритетов операторов в Visual Basic 6.0?
Каков порядок приоритетов операторов в Visual Basic 6.0 (VB6)?
В частности, для логических операторов.
Ответы
Ответ 1
Порядок старшинства арифметической операции
-
^
-
-
(одинарное отрицание) -
*
, /
-
\
-
Mod
-
+
, -
(двоичное сложение/вычитание) -
&
Порядок приоритета операции сравнения
-
=
-
<>
-
<
-
>
-
<=
-
>=
-
Like
, Is
Порядок приоритета логической операции
-
Not
-
And
-
Or
-
Xor
-
Eqv
-
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
В теме также объясняется приоритет для сравнения и арифметических операторов.
Я бы посоветовал, когда вы выяснили приоритет, ставите в скобки, если нет веской причины не редактировать код.