Tesla.Angela 发表于 2012-1-26 19:11:51

一个VB的灵异问题

这个问题真的说不清楚,在此记录一下。“至于你信不信,我反正信了”。

首先给出一段简单的代码:
Private Sub Command1_Click()
    Dim a As Boolean
    a = 1
    If a = True Then MsgBox "haha"
    If a <> False Then MsgBox "haha"
End Sub
某些时候,第一句(If a = True Then MsgBox "haha")会无效(既不弹出"haha"),只有第二句(If a <> False Then MsgBox "haha")有效。

不知道有谁遇到过?以后再遇到这种问题,我不会再判断True,只会判断【等于】或【不等于】False。

LittlePig 发表于 2012-1-26 21:46:03

沙发
貌似vb定义的true是-1?

马大哈 发表于 2012-1-27 00:08:18

Boolean 数据类型

Boolean 变量存储为 16 位(2 个字节)的数值形式,但只能是 True 或是 False。Boolean 变量的值显示为 True 或 False(在使用 Print 的时候),或者 #TRUE# 或 #FALSE#(在使用 Write # 的时候)。使用关键字 True 与 False 可将 Boolean 变量赋值为这两个状态中的一个。

当转换其他的数值类型为 Boolean 值时,0 会转成 False,而其他的值则变成 True。当转换 Boolean 值为其他的数据类型时,False 成为 0,而 True 成为 -1。

MSDN是这么说的.

不过这个事也说明了使用常量的重要性{:soso_e113:}

Tesla.Angela 发表于 2012-1-27 00:15:20

马大哈 发表于 2012-1-27 00:08 static/image/common/back.gif
MSDN是这么说的.

不过这个事也说明了使用常量的重要性

恩,最可恶的是某些时候灵某些时候不灵。真气人!

wszjljx 发表于 2012-1-29 18:40:19

为啥我测试 两个MsgBox都弹出了......

Tesla.Angela 发表于 2012-1-29 21:57:33

wszjljx 发表于 2012-1-29 18:40 static/image/common/back.gif
为啥我测试 两个MsgBox都弹出了......

我都说是“有时失灵”了,如果必然失灵,那就叫BUG了。

wszjljx 发表于 2012-1-29 22:03:24

好吧 不过我貌似从来没碰到过这种问题诶......

马大哈 发表于 2012-2-5 12:02:07

Tesla.Angela 发表于 2012-1-29 21:57 static/image/common/back.gif
我都说是“有时失灵”了,如果必然失灵,那就叫BUG了。

VB6的BUG本来就很多.....以前在CSDN回过一个帖子,就是1/0时不报除零,却报溢出的原因,我跟踪了一下,居然发现是开发VB6的人偷懒了,先检查了CPU的溢出位状态后就直接抛出错误,而不再检查其它的状态位了,所以后面除零位就算被置位了也不会报除零.....

不过毕竟这么老的东东了,哈哈.
页: [1]
查看完整版本: 一个VB的灵异问题