主题:vb菜鸟请教,请高手解惑
zsk19760069
[专家分:0] 发布于 2010-03-06 20:23:00
请看下面的用vb6.0编出的程序
Private Sub Command1_Click()
If Not 5 Mod 2 Then Print "6"
End Sub
为什么我在电脑上运行后在窗体上打印6呢?
5 mod 2 的结果应该是1呀,逻辑非运算之后应该是false,因此条件是不成立的,不应该执行
print "6" 呀
请高手帮忙解释以上运算过程,以及产生该结果的原因。
回复列表 (共11个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-03-06 22:41:00
你没对5 mod 2这件事加括号,而单目位运算符not的优先级高于双目运算符mod的优先级
因此先对5按位取反,肯定结果不是0,因此mod的结果就不是0 也就会打印6了
板凳
zsk19760069 [专家分:0] 发布于 2010-03-07 09:00:00
不对呀,我加上括号怎么还是打印6呢
加上括号后的程序是
Private Sub Command1_Click()
If Not (5 Mod 2 )Then Print "6"
End Sub
not书上说是逻辑非啊,逻辑非和按位取反应该是不一样的吧!
3 楼
zsk19760069 [专家分:0] 发布于 2010-03-07 09:16:00
明白了,是不是说在vb中,逻辑运算符的操作数一般应该是Boolean数据,也可以是数字,
如果是数字的话,就会对其进行按位与 、或、非的运算呀
而不会将这些数字转换为Boolean型数据再运算。
也就是说,1 and 0 的结果是0 ,而不是false ,结果是数字类型,而不是Boolean类型
5 楼
雪光风剑 [专家分:27190] 发布于 2010-03-07 14:47:00
是的,所以如果是形如
not (5 mod 2<>0)的形式就不会打印啦
6 楼
北极的冬 [专家分:0] 发布于 2010-04-22 14:44:00
不知该说些什么。。。。。。就是谢谢
7 楼
最美一瞬间 [专家分:0] 发布于 2010-04-22 15:22:00
请问大家有什么看法?我绝对喜欢这个帖子
8 楼
坦了要加衣 [专家分:0] 发布于 2010-04-22 16:25:00
不看不知道,看了才知道,好帖
9 楼
刘可吧外交官 [专家分:0] 发布于 2010-04-23 05:01:00
感激涕零,谢谢楼主的好贴
10 楼
最美一瞬间 [专家分:0] 发布于 2010-04-23 05:18:00
LZ的话真如“大音希声扫阴翳”,犹
我来回复