【发布时间】:2015-11-23 21:55:24
【问题描述】:
在 VBA 中,当您使用 OR 语句时,处理器是否会检查所有条件,而不管它是否已经找到 FALSE 语句?
即为:
If CriteriaA OR CriteriaB OR CriteriaC OR CriteriaD Then
Exit Function
End If
如果 CriteriaA 为假,是否会不必要地检查其他条件? CriteriaA 总是先检查吗?
我想知道,因为每项检查都需要花费大量时间,而我只需要知道其中一项是否为假。在这种情况下,我将最常失败的标准检查放在列表的第一位,这样它就会导致函数在不得不做更多工作之前失败。这是一个正确的假设吗?
【问题讨论】:
-
是的,VB(任何版本)在这方面不像C/C++。
-
@IIIIIllllllllIllllIIIIIIIIlll 正如我所说,当一个或多个术语具有副作用时考虑它,即它是一个评估为布尔值但同时修改某些内容的子例程。对于初学者来说,当他看到这样的语句时,他会认为语句中的所有例程实际上都被调用了,无论语句的结果如何! Basic 系列是这样,但 C 系列不是这样。
-
@A.S.H 当时的大多数语言(实际上是我开始编程的时候)并没有很多运算符。 C 在这方面非常不寻常,并且很容易拥有任何广泛使用的语言中最多的运算符(可能除了 APL,它非常专业)。大多数语言(COBOL、BASIC、Fortran,甚至 Pascal 和 Algol)只有大约一打,因此没有按位与逻辑的额外内容。我可以向你保证,当时的讨论是不是为什么大多数语言的运算符这么少,而是“为什么 C 有这么多?”
-
@RBarryYoung 感谢这一历史启示。 :)
标签: vba excel if-statement logic