我if
的主体中有一个语句,但条件是由多个OR'd表达式构成的。
在执行期间,如果在OR'd条件下的第一个表达式为true,第二个表达式是否仍将被求值?
即最好让表达式为OR'd,还是让每个表达式形成一个条件,使每个表达式else
的主体都else
相同?
例如
if ((!x && y && z) || (x && !y && !z) || (x != y) {
foo();
//vs
if (!x && y && z)
foo();
else if (x && !y && !z)
foo();
else if (x != y)
foo();
否,如果“或”(AND)的左侧求值为“真”(false),则不求右侧。这称为短路,是C的一个非常著名的功能。
您可以通过以下方式检查
int f () {
printf("f!\n");
return 1;
}
int g () {
printf("g!\n");
return 0;
}
int main () {
if(f() || g())
printf("hey\n");
}
这将打印
f!
hey
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句