Tob*_*oby 2 c evaluation if-statement conditional-statements
我的if声明在其正文中有一个声明,但条件由几个OR表达式组成.
在执行期间,如果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();
Run Code Online (Sandbox Code Playgroud)
不,如果OR(AND)的左侧评估为true(false),则不评估右侧.它被称为短路,是C的一个众所周知的特征.
你可以检查一下
int f () {
printf("f!\n");
return 1;
}
int g () {
printf("g!\n");
return 0;
}
int main () {
if(f() || g())
printf("hey\n");
}
Run Code Online (Sandbox Code Playgroud)
这会打印出来
f!
hey
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |