我只想了解为什么会发生以下情况:
Msgbox True
Output: True
Msgbox -True
Output: 1
Run Code Online (Sandbox Code Playgroud)
为什么会变成1?
因为您强制 VBA 将布尔值隐式转换为数字。True
在内部表示为 -1,因此将其转换为数字将导致 -1,并且-(-1)
是1
。False
,顺便说一句,存储为 0,因此-False
将打印0
.
但是,您应该避免使用布尔值进行计算。如果你这样做,很可能你走错了路。布尔值可以为真或为假,这就是您需要知道的全部内容。你唯一应该使用的是 Bool'sche Algebra using AND
,OR
和NOT
关于布尔值的Microsoft VBA 文档- 另请参阅vba 中的隐式类型转换规则是什么?