让我们说我有一个条件,如果该检查的事件A,B,C,...是真实的一个,如图所示:如果有多个OR子句条件
if(a || b || c || .... || z)
do something
我的问题是,让我们说,条件C成为事实。那么程序会评估d到z的条件还是继续执行“do something”指令?
让我们说我有一个条件,如果该检查的事件A,B,C,...是真实的一个,如图所示:如果有多个OR子句条件
if(a || b || c || .... || z)
do something
我的问题是,让我们说,条件C成为事实。那么程序会评估d到z的条件还是继续执行“do something”指令?
使用||将评估从左到右的每个条件,直到它达到真值。然后它会停止检查。
if(a || b || c || .... || z)
如果使用|,则将评估每个条件,而不管结果如何。
if(a | b | c | .... | z)
假设我们有int a = b = c = 1
。
如果我的++a || ++b;
,a
会在语句后2,因为一个OR子句只需要其中一个条件需要为真,并且b
将保持为1,因为编译器不会继续检查它,因为表达式已经是真的了。
然而,如果我们有--a || ++b
,a
评估为0,就逻辑而言将是false
。所以它继续检查其他条件:b
将是2,这在逻辑上是正确的。
那么你需要记住什么?
这一切都被称为
短路评价
如需更多信息,请单击here.
这就是所谓的短路评价。例如,java从左到右检查它;意味着如果c为真,它不会检查该部分的其余部分。
但这不适用于所有语言。 例如,csh从右向左执行短路评估。
取决于选择的编程语言,但大多数第一个真正会中断检查 – baao
它通常被称为[短路](https://en.wikipedia.org/wiki/Short-circuit_evaluation)'ing评测 – birdspider
只是测试它... –