一个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。 沙发
貌似vb定义的true是-1? 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:} 马大哈 发表于 2012-1-27 00:08 static/image/common/back.gif
MSDN是这么说的.
不过这个事也说明了使用常量的重要性
恩,最可恶的是某些时候灵某些时候不灵。真气人! 为啥我测试 两个MsgBox都弹出了...... wszjljx 发表于 2012-1-29 18:40 static/image/common/back.gif
为啥我测试 两个MsgBox都弹出了......
我都说是“有时失灵”了,如果必然失灵,那就叫BUG了。 好吧 不过我貌似从来没碰到过这种问题诶...... Tesla.Angela 发表于 2012-1-29 21:57 static/image/common/back.gif
我都说是“有时失灵”了,如果必然失灵,那就叫BUG了。
VB6的BUG本来就很多.....以前在CSDN回过一个帖子,就是1/0时不报除零,却报溢出的原因,我跟踪了一下,居然发现是开发VB6的人偷懒了,先检查了CPU的溢出位状态后就直接抛出错误,而不再检查其它的状态位了,所以后面除零位就算被置位了也不会报除零.....
不过毕竟这么老的东东了,哈哈.
页:
[1]