How are “anded” 'if' conditions evaluated?
本问题已经有最佳答案,请猛点这里访问。
在C中,如果我们有以下代码:
1 | if (condition1 && condition2) |
Condition1结果是假的,Condition2是否仍然被检查,或者只是在if语句之后继续执行?
首先对
是的,C对布尔表达式进行短路评估。因此
如果(x&y())
1)X将首先执行
2)只有当且仅当x返回真时,y才会被执行。
这适用于所有布尔表达式,而不仅仅是if语句中的表达式……请在msdn联机提供的c规范中检查这一点。第14节
您也可以使用&;在这种情况下,它不会是短路评估,因为
&是用于位操作的"和"运算符。&;&;是用于计算逻辑表达式的"and"运算符。
不,