是和运算符总是在Or之前进行评估

时间:2011-08-08 14:35:40

标签: vb6 operators

我今天早上发现了一些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 <>等等

2 个答案:

答案 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不是数字!这对性能和正确性有影响。