回 帖 发 新 帖 刷新版面

主题:vb菜鸟请教,请高手解惑

请看下面的用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个回复)

沙发

你没对5 mod 2这件事加括号,而单目位运算符not的优先级高于双目运算符mod的优先级
因此先对5按位取反,肯定结果不是0,因此mod的结果就不是0 也就会打印6了

板凳

不对呀,我加上括号怎么还是打印6呢
加上括号后的程序是
            Private Sub Command1_Click()
                 If Not (5 Mod 2 )Then Print "6"
            End Sub
not书上说是逻辑非啊,逻辑非和按位取反应该是不一样的吧!

3 楼

明白了,是不是说在vb中,逻辑运算符的操作数一般应该是Boolean数据,也可以是数字,
如果是数字的话,就会对其进行按位与 、或、非的运算呀
而不会将这些数字转换为Boolean型数据再运算。
也就是说,1 and 0 的结果是0 ,而不是false ,结果是数字类型,而不是Boolean类型

4 楼

非常感谢!

5 楼

是的,所以如果是形如
not (5 mod 2<>0)的形式就不会打印啦

6 楼

不知该说些什么。。。。。。就是谢谢

7 楼

请问大家有什么看法?我绝对喜欢这个帖子

8 楼

不看不知道,看了才知道,好帖

9 楼

感激涕零,谢谢楼主的好贴

10 楼

LZ的话真如“大音希声扫阴翳”,犹

我来回复

您尚未登录,请登录后再回复。点此登录或注册