2016-09-16 92 views
2

当使用两个AND运算符和数字时,我发现意外的行为:第三个条目似乎被认为是模数2.请参见下面的示例。VBA中的布尔逻辑

我想知道为什么行为是这样的。

Sub Test() 

Dim a As Boolean 
Dim b As Boolean 

a = True And 1 And 2 ' a = false 
b = True And 2 And 3 ' b = true 

MsgBox (a) 
MsgBox (b) 

End Sub 

回答

4

And应用于按位这里

1111 'true 
And 0001 '1 
And 0010 '2 
------------- 
    0000 '0 -> evaluates to false when cast as boolean 

    1111 'true 
And 0010 '2 
And 0011 '3 
------------- 
    0010 '2 -> evaluates to true when cast as boolean