为TRUE,评估返回-1?(为什么不1)

Bru*_*yne 3 excel vba

我和另外一个问题帮助,我意识到,使用Evaluate在VBA仿佛回到-1TRUE陈述.

数据:

Column A    Column B
A           A
A           B
C           C
Run Code Online (Sandbox Code Playgroud)

因此,如果我放下=INT(A2=B2)并拖下来,我会得到1, 0, 1我期望的.

但是,使用以下VBA,我得到了-1, 0, -1.

For i = 2 To 4
    Cells(i, 4).Value = Evaluate(Int(Cells(i, 1) = Cells(i, 2)))
Next i
Run Code Online (Sandbox Code Playgroud)

为什么要EVALUATE使用-1TRUE

Bat*_*eba 8

VBA使用-1表示True值.参看 C和C++使用1.

-1在2的补码有符号整数类型中将所有位设置为1,因此选择有一定意义.

选择可以追溯到DOS BASIC(以及其他BASIC,例如旧BBC Micro上的那个),它早于20世纪90年代中期的组件对象模型,至今仍在使用.

  • @dwirony:换句话说,-1是0的按位否定. (3认同)