VB6中的布尔值为False和True的整数值是多少?

Bri*_*per 10 vb6

我正在使用一些旧的VB6代码,因此......

Dim STATUS As Integer

STATUS = -1

If (Not STATUS) Then
' do something
Else
' do something else
End If
Run Code Online (Sandbox Code Playgroud)

所以我当然想知道这个代码的哪个分支被执行了.那么有谁知道VB6中True和False的数值是什么?

Unm*_*kar 11

True存储为-1,false存储为0.任何非零值都被视为true.

要查看原因,请查看 - http://www.vbforums.com/showthread.php?t=405047

  • 我不是100%肯定..但在这种情况下55不会转换为bool值,也许它会比较55和-1以返回false.如果您创建一个bool变量并为其分配55然后进行比较,结果将为true. (4认同)
  • 当转换为布尔值**时,任何非零值都为真**(赋值,CBool​​) (3认同)

Cod*_*ray 10

在VB 6中,True数值为-1.False的数值为0.

原因是因为Boolean数据类型存储为16位有符号整数.因此,
-1在二进制(1111111111111111)中计算为16 1.False是16 0s(0000000000000000).这产生了BASIC整个演变过程中的关系:True = Not False.

  • +1.同样值得一提的是,VB6"Not"始终是算术运算符,没有单独的逻辑"Not"运算符.由于类型强制,你可以使用"不"与布尔值,就好像它是一个逻辑运算符. (3认同)