我有一點舊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中是什麼?
我有一點舊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中是什麼?
將True存儲爲-1,將false存儲爲0.將任何非零值視爲true。
,看看它爲什麼是這樣請檢查 - http://www.vbforums.com/showthread.php?t=405047
在VB 6,True
具有-1的數值。 False
的數值爲0.
原因是因爲Boolean
數據類型存儲爲16位有符號整數。因此,
-1計算爲二進制的16 1s(1111111111111111)。 False
是16位(0000000000000000)。這產生了在BASIC的演變中持續的關係:True = Not False
。
不是一個真正的答案,但只是戳一下,我輸入到這個即時窗口,與這些結果:
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。爲什麼?我真的不能說...
真正的問題是爲什麼原始代碼不首先使用「布爾」? – 2010-11-25 10:09:48
@Cody Gray,這確實是個好問題。 – 2010-11-25 10:12:25
@Cody,@Brian如果代碼真的很老,那麼它可能早於將`Boolean`引入到語言中。 AFAICR布爾是在VB4中引入的。 – MarkJ 2010-11-25 11:58:37