"Ors"评估整个表达式吗?



说我有以下语句逻辑(我将在此示例中使用VBA,但也与其他语言有关)

x = 1
y = 2
z = 1000
If x = 1 Or y = 2 Or z = 4 Then
     Execute Code
End

编译器或执行程序是否发现第一个值是正确的,然后继续进行Execute Code,或者它是否完成了该语句的其余部分?

我不能代表VBA,但我可以说这是特定于语言的。在某些语言中,程序员具有使用"短路"和//或表达式的能力。短路是如果已经确定结果,则不再评估布尔表达的过程。

如果使用短路,如果发现错误,则布尔操作会尽早停止。如果使用短路,则布尔操作如果找到真实,则会尽早停止。

例如,在Java中:

a || b是一个短路或

a | b是一个非短路或

a && b是一个短路,

a & b是一种非短路和

有些人可能会问:"为什么我要使用非短路和或或?"当您调用一个函数返回您想要在每种情况下要运行的布尔值的函数时,之所以如此。例如,a() | b()将同时运行函数A和功能b。a() || b()仅在返回false时运行函数B。

我认为在VBA中也可以使用OreLse。

'或'(位比较)始终完成陈述的其余部分,'olelse'(逻辑比较)在满足要求时停止。在C ,C#和Java中,您可以使用'|'和'||'。

例如,由于尝试从空对象访问字段时,if object is null Or object.value = ""将导致无效的异常。

使用ORELSE评估if object is null OrElse object.value = ""将在评估空对象时进行第一次比较。

最新更新