gpt4 book ai didi

c - OR'd if 条件的评估

转载 作者:行者123 更新时间:2023-12-02 08:36:40 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com