条件评估

托比

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章