gpt4 book ai didi

C 运算符 && 和 || 的优先级

转载 作者:行者123 更新时间:2023-11-30 18:34:12 25 4
gpt4 key购买 nike

#include <stdio.h>

int main()
{
int a = -3, b = 2, c = 0, d;
d = ++a || ++b && ++c;
printf("%d %d %d %d", a, b, c, d);
return 0;
}

程序的输出是:

-2 2 0 1

编译器在 AND ( || ) 之前评估 OR ( && ) 运算符,但在运算符优先级上,AND ( && ) 运算符位于 OR ( || ) 之前。

请解释为什么会发生这种情况。

最佳答案

正是因为 && has more precedence than || ,声明:

d = ++a || ++b && ++c;

相当于:

d = ++a || (++b && ++c);

现在,首先评估和测试 ++a (由于运算符 ||evaluation order 规则)。最终结果是 -2

由于它非零,因此结果为 true (1)。因此,由于 || 的快捷方式机制,表达式的另一部分 (++b &&++c) 不会被计算。 > 运算符。

因此,d 被分配为 1

关于C 运算符 && 和 || 的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52963371/

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