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

时间:2010-11-25 10:00:59

标签: vb6

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

Dim STATUS As Integer

STATUS = -1

If (Not STATUS) Then
' do something
Else
' do something else
End If

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

3 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:10)

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

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

答案 2 :(得分:3)

不是一个真正的答案,但只是在探讨,我把它输入到即时窗口中,结果如下:

For x = -5 To 5 : ? x, CBool(x), ( x = True ), ( x = False ) : Next x
-5            True          False         False
-4            True          False         False
-3            True          False         False
-2            True          False         False
-1            True          True          False
 0            False         False         True
 1            True          False         False
 2            True          False         False
 3            True          False         False
 4            True          False         False
 5            True          False         False

(我测试了更多的值,但只有-1和0有任何“有趣”的事情。其余的都是真/假/假。)所以,根据经验,我会说比较是在算术上进行的,除非你用CBool​​演员。为什么?我真的不能说......