举个例子
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
但是这样比较啰嗦,所以想知道明确的答案。请知道的告知一下,谢谢

解决方案 »

  1.   

    VB提高的是开发效率,所以使用的是if a or b then
      

  2.   

    做个测试就知道了。Sub test()
        
        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
      

  3.   

    楼上的没有说明a or b VB是如何运行的啊?
      

  4.   

    这不是钻牛角尖,一般情况是不需要特别关注的,但是当
    A or B中B的判断需要很长时间,比如15秒,
    在一个1000次循环中每次判断A or B,而一般情况A为真的概率90%以上,
    这时就非常关键了。
    你仍容忍你的程序1000此循环,每次停个15秒,而如果处理的好的话,你
    的程序效率至少可以提高90%.
      

  5.   

    要等B的一个测试例子:
    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
      

  6.   

    好象不是吧,如果有一个不符合条件就else
      

  7.   

    无论a是否为true  都要对b进行计算所以如果十分在意,应该把
        If a Or b Then
            '代码
        End If
    改为If a Then
        asub
    ElseIf b Then
        asub
    End IfSub asub()
        '代码
    End Sub
      

  8.   


    这个是正确的,所有还是建议LZ用你现在这个方法。同理IIF函数也是这样的。
    VB不管是AND还是OR,其两边的判断式都是要判断或执行的。
      

  9.   

    我来抬杠了是从左至右好不好????
    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
      

  10.   

    vb的OR 参数条件判断应该都要执行的
    .net 只要满足一个就认为是真 后面就不判断了
      

  11.   

    那么请问 Or 和 OrElse 什么区别?
      

  12.   

    那么请问 Or 和 OrElse 有区别吗?
      

  13.   

    TNND,列表中有20个回复,打开只有18个,SB。
      

  14.   

    那么 Or 和 OrElse 有区别吗?
    还是你不知要还有一个 OrElse ?