2010-11-25 89 views
10

我有一点旧VB6代码,从而去工作......VB6中布尔值为False和True的整数值是多少?

Dim STATUS As Integer 

STATUS = -1 

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

所以我很自然,不知道这是执行该代码的分支。那么有谁知道True和False的数值在VB6中是什么?

+1

真正的问题是为什么原始代码不首先使用“布尔”? – 2010-11-25 10:09:48

+0

@Cody Gray,这确实是个好问题。 – 2010-11-25 10:12:25

+1

@Cody,@Brian如果代码真的很老,那么它可能早于将`Boolean`引入到语言中。 AFAICR布尔是在VB4中引入的。 – MarkJ 2010-11-25 11:58:37

回答

10

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

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

2

不是一个真正的答案,但只是戳一下,我输入到这个即时窗口,与这些结果:

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​​。为什么?我真的不能说...

相关问题