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