vb中怎么使用好or?
If 通信次数 < 2 Or 通信状态 = False Thengoto a1
end if
我本意是想在通信次数大于2次或是通信状态 = True后不执行后面goto语句,但老是用不好or,通信次数>2或是通信状态 = True还是在执行goto a1,非要两个条件都满足后才不执行goto语句,or不是只需要一个条件满足就可以了的吗? 本帖最后由 xywap 于 2013-1-31 23:29 编辑
If 通信次数 > 2 Or 通信状态 = True Then
else
goto a1
end if
或
If Not (通信次数 > 2 Or 通信状态 = True) Then
goto a1
end if
If 通信次数 < 2 Or 通信状态 = False Then
和
If 通信次数 > 2 Or 通信状态 = True Then
else
goto a1
end if
在判别上有什么区别吗?应该还是可以写成下面这样啊.
If 通信次数 > 2 Or 通信状态 = True Then
elseIf 通信次数 < 2 Or 通信状态 = False Then
goto a1
end if
If 通信次数 < 2 Or 通信状态 = False Then
和
If 通信次数 > 2 Or 通信状态 = True Then
的区别就在于
1是:任一个满足就执行goto a1,同时不满足才不执行goto a1
2是:任一个满足就不执行goto a1,同时不满足才执行goto a1
不知道是不是我这里的问题,还是不对,简化成下面这样没问题吧:
If 通信次数 > 2 Or 通信状态 = True Then
GoTo A1
这样通信次数远大于2后还是执行了goto语句。 标号a1在哪?
楼主最好是上完整的函数或程序,有可能不是IF语句的问题,而是流程问题 本帖最后由 snoopyzz 于 2013-2-1 14:06 编辑
LS 真的懂if吗?
or是满足一个条件就 "执行" 而不是"不执行"!!
LZ想必初中就没学好数学吧...
你想反过来用的话, 需要的是 and
(A or B)的反逻辑是 (反A and 反B)
(A and B)的反逻辑是 (反A or 反B)
如同 数学的 交集 并集 整体取补后要变符号一样....唉,不知道说啥好...
===============
LZ原话"我本意是想在通信次数大于2次或是通信状态 = True后不执行后面goto语句"
那你需要的是
If 通信次数 >= 2 or 通信状态 = True Then
else
goto a1
end if
即等效于
If 通信次数 < 2 and 通信状态 = False Then
goto a1
end if
我原来用的就是这句:
If 通信次数 < 2 Or 通信状态 = False Then
goto a1
end if
只有通信次数>2和通信状态=true后才不执行下面的goto语句,我需要的是只要通信次数>2或是通信状态=ture就不执行goto,后来干脆不用or了
:( hisun 发表于 2013-2-2 11:10 static/image/common/back.gif
我原来用的就是这句:
If 通信次数 < 2 Or 通信状态 = False Then
goto a1
麻烦仔细看下我7L的回复...别看漏了 你等效的不是
If 通信次数 < 2 Or 通信状态 = False Then
goto a1
end if
说实话我真用不好or,几乎次次出错. 本帖最后由 snoopyzz 于 2013-2-2 11:53 编辑
hisun 发表于 2013-2-2 11:19 static/image/common/back.gif
你等效的不是
If 通信次数 < 2 Or 通信状态 = False Then
goto a1
你笨到我想吐血....
你需的是 次数>=2 或 状态=true时不执行goto, 那就是下面这两个(任选一个)!!
If 通信次数 >= 2 or 通信状态 = True Then
else 这里有个else看仔细了!!
goto a1
end if
或者
If 通信次数< 2 and 通信状态 = False Then 这里是and不是or!!
goto a1
end if 真没注意到,真不好意思,现在到要用到OR的地方都要改成其它方式,怕了.
不怕被人说成笨,就怕没人点,谢谢指点.
页:
[1]