И Оператор всегда оценивается перед Или - PullRequest
1 голос
/ 08 августа 2011

Сегодня утром я столкнулся с ошибкой в ​​каком-то коде VB6, которая неправильно оценивалась.Код имеет следующий формат:

<Boolean Value 1> Or <Boolean Value 2> And <Boolean Value 3>

Исправление (в данном случае) заключалось в следующем:

(<Boolean Value 1> Or <Boolean Value 2>) And <Boolean Value 3>

Поскольку And неправильно оценивалсяВо-первых, мой вопрос - всегда ли это так?

Я предполагаю, что такие вещи, как + - *, оцениваются с использованием правила BIDMAS , но как насчет этих операторов And Or Not XOr Is <> etc

Ответы [ 2 ]

6 голосов
/ 08 августа 2011

Приоритет оператора в Visual Basic

Приоритет в порядке появления:

Negation (Not)

Conjunction (And, AndAlso)

Inclusive disjunction (Or, OrElse)

Exclusive disjunction (Xor)
1 голос
/ 08 августа 2011

Да, как и в большинстве языков программирования, and связывает сильнее, чем or, поэтому в этом случае необходимы скобки.

Что также может быть интересно, так это то, что VB6 не имеет операций короткого замыкания, а это означает, что если у вас есть if isNumeric(var) and myFunc(var) then ..., myFunc даже выполняется, если ваш var не числовой! Это влияет на производительность и правильность.

...