表达式True And -1
如何评估为-1
?
我希望第二个操作数(即-1
)会自动转换为True
,结果为True
。
我意识到And
在这里被解释为逐位AND运算符。但是,当第一个操作数是布尔值并且逻辑解释是可能的时,为什么会出现这种情况呢?
答案 0 :(得分:4)
And Operator应该如何运作。引用文档:
如果操作数由一个布尔表达式和一个数值表达式组成,则Visual Basic将布尔表达式转换为数字值(-1表示 True 和0表示 False )并执行按位操作。
为什么这样做?我们只能推测,但我怀疑有两个原因:
向后兼容性。 VB6和VBA的行为也是这样的。
对于逻辑运算,应使用新的短路运算符 AndAlso 和 OrElse 。因此,遗留运算符和以及或主要用于按位运算是有道理的。