找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 8206|回复: 7

[交流] 一个VB的灵异问题

 火.. [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2012-1-26 19:11:51 | 显示全部楼层 |阅读模式
这个问题真的说不清楚,在此记录一下。“至于你信不信,我反正信了”。

首先给出一段简单的代码:

  1. Private Sub Command1_Click()
  2.     Dim a As Boolean
  3.     a = 1
  4.     If a = True Then MsgBox "haha"
  5.     If a <> False Then MsgBox "haha"
  6. End Sub
复制代码
某些时候,第一句(If a = True Then MsgBox "haha")会无效(既不弹出"haha"),只有第二句(If a <> False Then MsgBox "haha")有效。

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

8

主题

149

回帖

2

精华

钻石会员

积分
3407
发表于 2012-1-26 21:46:03 | 显示全部楼层
沙发
貌似vb定义的true是-1?

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 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:}
我就是嗷嗷叫的老马了......

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2012-1-27 00:15:20 | 显示全部楼层
马大哈 发表于 2012-1-27 00:08
MSDN是这么说的.

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

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

21

主题

162

回帖

4

精华

论坛元老

Tokyo-Hot

积分
5945
QQ
发表于 2012-1-29 18:40:19 | 显示全部楼层
为啥我测试 两个MsgBox都弹出了......
洗澡脱光衣服打开水才发现自己没带洗发水没带沐浴乳只带了一包洗衣粉 心酸的用洗衣粉把自己搓了一遍... ...

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2012-1-29 21:57:33 | 显示全部楼层
wszjljx 发表于 2012-1-29 18:40
为啥我测试 两个MsgBox都弹出了......

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

21

主题

162

回帖

4

精华

论坛元老

Tokyo-Hot

积分
5945
QQ
发表于 2012-1-29 22:03:24 | 显示全部楼层
好吧 不过我貌似从来没碰到过这种问题诶......
洗澡脱光衣服打开水才发现自己没带洗发水没带沐浴乳只带了一包洗衣粉 心酸的用洗衣粉把自己搓了一遍... ...

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2012-2-5 12:02:07 | 显示全部楼层
Tesla.Angela 发表于 2012-1-29 21:57
我都说是“有时失灵”了,如果必然失灵,那就叫BUG了。

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

不过毕竟这么老的东东了,哈哈.
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表