作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 if
语句,其主体中有一个语句,但条件由多个 OR 表达式组成。
在执行过程中,如果 OR 条件中的第一个表达式为真,第二个表达式是否仍会被计算?
即是对表达式进行“或”运算,还是让每个表达式形成 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();
最佳答案
否,如果 OR (AND) 的左侧计算结果为真(假),则不计算右侧。这称为短路,是 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
关于c - OR'd if 条件的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658073/
我是一名优秀的程序员,十分优秀!