Каков порядок приоритета операторов в Visual Basic 6.0? - PullRequest
14 голосов
/ 11 сентября 2008

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

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

Ответы [ 3 ]

16 голосов
/ 11 сентября 2008

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

  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

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

10 голосов
/ 11 сентября 2008

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

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

If A < B And B < C Then

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

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

3 голосов
/ 05 марта 2009

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


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

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

Not   
And   
Or   
Xor   
Eqv   
Imp   

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...