让我们说我有一个if条件,它检查事件a,b,c,...中的一个是真的如图所示:
if(a || b || c || .... || z)
do something
我的问题是,让我们说条件c证明是真的。然后程序会评估条件d到z还是继续执行“做某事”指令?
答案 0 :(得分:0)
使用||将从左到右评估每个条件,直到它达到一个真实的值。然后它会停止检查。
if(a || b || c || .... || z)
如果使用|,则无论结果如何,都将评估每个条件。
if(a | b | c | .... | z)
答案 1 :(得分:0)
假设我们有int a = b = c = 1
如果我执行++a || ++b;
,a
将在语句之后为2,因为OR子句只需要其中一个条件需要为真且b
将保持为1,因为编译器不会因为表达式已经存在,所以继续检查它
但是,如果我们有--a || ++b
,a
的计算结果为0,就逻辑而言将为false
。所以它继续检查其他条件:b
将是2,这在逻辑上是正确的
那么你需要记住什么?
这一切都叫做
短路评估
如需更多信息,请点击here.
答案 2 :(得分:0)
这称为短路评估。 例如,java从左到右检查它;意味着如果c为真,则不会检查该部分的其余部分。
但并非所有语言都适用。 例如,csh从右到左执行短路评估。