为什么这个 VBA 代码给出 -25 而不是 25?

时间:2020-12-30 21:43:28

标签: vba

这是我正在阅读的一本书的片段:

Sub VariantDemo()
  MyVar = True
  MyVar = MyVar * 100
  MyVar = MyVar / 4
  MyVar = "Answer: " & MyVar
  MsgBox MyVar
End Sub

在答案框中显示“答案:-25”?,但为什么我们有减号?我直接在Excel中计算数值时,数值为25。

1 个答案:

答案 0 :(得分:0)

在 VBA 中,在大多数其他语言中,False 的数值是 0,任何其他值都是 True。出于约定和方便的考虑,True 的值被强制转换为 -1 的有符号整数,因此在您的示例中为 -1*100/4 = -25

对于所有有符号整数,一个用 1 位填充的值,例如 11111111 等于 -1。这是因为 two's complement 可以最大化第一位是符号位的类型的存储。