VBA - AND 逻辑运算符未按预期工作

VBA - AND logical operator not working as expected

我只是 运行 一些代码并遇到了意外错误,我意识到这是因为我的一个 if 语句 运行 不应该是由于 And 运算符。

我的发言:

If 3 And -6 then

计算结果为 true 并且 If 执行(但它不应该)。 3 和 -6 最终来自其他 Or 和 Not 语句。

我去了另一个 sheet 看看发生了什么事

x = 3 And -6

这个 returns x = "2",它在 If 语句中的计算结果为真(但我希望它为假)。

如果我比较 1 And -6 或任何其他负数,它将如预期的那样为假,但对于大于 1 的数字则不然。

我在某处看到VBA的逻辑运算符是按位的(不允许短路编程,让我很头疼),这是否与它有关,有什么办法得到一个更经典的作品?

您只是误解了 AND 运算符。

当你对 2 个数字进行 And 操作时,它会做一些明智的 AND。放到一个最简单的字节里,就是在做它应该做的事情。

对于3和-6(3在二进制中是0000 0011,-6是1000 0110):

0000 0011 (3)
1000 0110 (-6)
0000 0010 (AND result = 2)

1 和 -6 相同:

0000 0001 (1)
1001 0110 (-6)
0000 0000 (AND result = 0, same value as False)

对于 If 条件,只有零 (0) 被认为是 False,其他任何东西都是 True,所以这正是您所观察到的。您可以通过 ?cint(true)?cint(false) 在立即 window.

中验证这一点