我正在使用一些旧的VB6代码,因此......
Dim STATUS As Integer
STATUS = -1
If (Not STATUS) Then
' do something
Else
' do something else
End If
所以我当然想知道这段代码的哪个分支被执行了。那么有谁知道VB6中True和False的数值是什么?
答案 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演员。为什么?我真的不能说......