举个例子
A or B这个条件表达式,VB6是如何执行的?如果A结果为真,则B不需要比较直接执行下面的语句,
我记得C语言是这样做,C语言还分左优先和右优先。这样做可以提高代码效率。比如如下代码:
if A or B then
代码段1
else
代码段2
end if
如果B的判定需要很多时间(数据库查询)的话,浪费就比较大了,我的保险做法是
if A then
代码段1
elseif B then
代码段1
else
代码段2
end if
但是这样比较啰嗦,所以想知道明确的答案。请知道的告知一下,谢谢
A or B这个条件表达式,VB6是如何执行的?如果A结果为真,则B不需要比较直接执行下面的语句,
我记得C语言是这样做,C语言还分左优先和右优先。这样做可以提高代码效率。比如如下代码:
if A or B then
代码段1
else
代码段2
end if
如果B的判定需要很多时间(数据库查询)的话,浪费就比较大了,我的保险做法是
if A then
代码段1
elseif B then
代码段1
else
代码段2
end if
但是这样比较啰嗦,所以想知道明确的答案。请知道的告知一下,谢谢
解决方案 »
- vb下面的TreeVeiw控件怎么让一个节点不可用呀
- 使用Inet控件进行FTP操作,EXECUTE命令中若参数本身含有空格,该如何处理呢?
- 单步运行的使用方法
- 哪位大侠能推荐一本网上的关于VBA的书。
- 小问题求助
- 高分求教
- 自动编号
- 执行一次datareport.show之后报表的数据就不能改变了???(急!!!)
- 急!急!急!怎么把.txt文件里的数据画出来?(最好画到如Word文档等可打印的里面)
- 请问高手鼠标移到一个控件上如PICTURE上,实现图片颜色渐变,移出控件颜色复原,如何实现?
- 如何设置带ACTIVEX DLL的全局变量,或者如何向数据库传递打开数据库的变量。
- 关于多表的操作!
If a Or b Then
End If
End SubFunction a() As Boolean
Debug.Print "a"
a = True
End FunctionFunction b() As Boolean
b = True
Debug.Print "b"
End Function
A or B中B的判断需要很长时间,比如15秒,
在一个1000次循环中每次判断A or B,而一般情况A为真的概率90%以上,
这时就非常关键了。
你仍容忍你的程序1000此循环,每次停个15秒,而如果处理的好的话,你
的程序效率至少可以提高90%.
Private Sub Command1_Click()
a = True
b = flase
If a Or test(b) Then
Debug.Print "ok"
End If
End Sub
Function test(ByVal b As Boolean) As Boolean
For i = 0 To 10000000
DoEvents
Me.Caption = i
Next
test = False
End Function至于原因,估计是因为vb中的and、or、not等几个运算符的作用不仅仅是进行逻辑运算,还在位运算中有应用,而进行位运算,就必须后面的B了
debug.print 23 or 111
If a Or b Then
'代码
End If
改为If a Then
asub
ElseIf b Then
asub
End IfSub asub()
'代码
End Sub
这个是正确的,所有还是建议LZ用你现在这个方法。同理IIF函数也是这样的。
VB不管是AND还是OR,其两边的判断式都是要判断或执行的。
Private Sub Command1_Click()
a = True
b = flase
If testa(a) Or test(b) Then
Debug.Print "ok"
End If
End Sub
Function test(ByVal b As Boolean) As Boolean
For i = 0 To 10000000
DoEvents
Me.Caption = i
Next
test = False
End Function
Function testa(ByVal b As Boolean) As Boolean
For i = 0 To 10000000
DoEvents
Me.Caption = "a" + CStr(i)
Next
testa = False
End Function
.net 只要满足一个就认为是真 后面就不判断了
还是你不知要还有一个 OrElse ?