我今天早上发现了一些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 <>
等等
答案 0 :(得分:6)
Operator Precedence in Visual Basic
出现顺序的优先顺序:
Negation (Not)
Conjunction (And, AndAlso)
Inclusive disjunction (Or, OrElse)
Exclusive disjunction (Xor)
答案 1 :(得分:1)
是的,与大多数编程语言一样,and
的绑定强于or
,因此在这种情况下必须使用括号。
可能有趣的是VB6没有短路操作,这意味着如果你的if isNumeric(var) and myFunc(var) then ...
myFunc甚至被执行,以防你的var不是数字!这对性能和正确性有影响。