2010-11-25 130 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​​。爲什麼?我真的不能說...

相關問題