代码之家  ›  专栏  ›  技术社区  ›  Brian Hooper

VB6中Boolean False和True的整数值是什么?

vb6
  •  10
  • Brian Hooper  · 技术社区  · 14 年前

    我正在处理一点旧的VB6代码,因此。。。

    Dim STATUS As Integer
    
    STATUS = -1
    
    If (Not STATUS) Then
    ' do something
    Else
    ' do something else
    End If
    

    所以我很自然地想知道这段代码的哪个分支是被执行的。那么,有人知道VB6中True和False的数值是多少吗?

    3 回复  |  直到 14 年前
        1
  •  11
  •   Unmesh Kondolikar    14 年前

    True存储为-1,false存储为0。任何非零值都被认为是真的。

    想知道为什么,请检查一下- http://www.vbforums.com/showthread.php?t=405047

        2
  •  10
  •   Flynn1179    10 年前

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

    原因是 Boolean 数据类型存储为16位有符号整数。因此,
    -1在二进制(1111111111111)中计算为16 1s。 是16 0s(0000000000000000)。这就产生了一种关系,这种关系贯穿于基本: True = Not False .

        3
  •  3
  •   JeffK    14 年前

    不是一个真正的答案,但是我只是随便翻了翻,我在即时窗口中输入了这个,结果是:

    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进行转换。为什么?我真的不能说。。。