关于c#:如果评估条件,“anded”如何?

How are “anded” 'if' conditions evaluated?

本问题已经有最佳答案,请猛点这里访问。

在C中,如果我们有以下代码:

1
if (condition1 && condition2)

Condition1结果是假的,Condition2是否仍然被检查,或者只是在if语句之后继续执行?


首先对condition1进行评价,如果是true则对condition2进行评价。如果condition1false,则不会对condition2进行评估。这叫做短路评估。


是的,C对布尔表达式进行短路评估。因此

如果(x&y())

1)X将首先执行

2)只有当且仅当x返回真时,y才会被执行。

这适用于所有布尔表达式,而不仅仅是if语句中的表达式……请在msdn联机提供的c规范中检查这一点。第14节

您也可以使用&;在这种情况下,它不会是短路评估,因为

&是用于位操作的"和"运算符。&;&;是用于计算逻辑表达式的"and"运算符。


不,&&操作员短路。但是,&运算符不是,如果使用它,将计算所有表达式。