gpt4 book ai didi

c - 不理解 GCC 编译器行为条件表达式(测试)?值 1 : value 2

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

奇怪的编译器行为?这是一个错误吗?在 Linux 上使用 GCC

#include <stdio.h>
#define NSIM 1

int main()
{
printf("%d\n\n",(2 +(NSIM==1)?0:99));
return 0;
}

输出为 0 (NSIM=1)

但是

#include <stdio.h>
#define NSIM 1

int main()
{
printf("%d\n\n",(2 +((NSIM==1)?0:99)));
return 0;
}

给出输出2

这是编译器中的错误吗 - 在我看来,它们都应该给出 2

最佳答案

这不是一个错误。表达式

2 + (NSIM == 1) ? 0 : 99

分组为

(2 + (NSIM == 1)) ? 0 : 99

由于运算符优先级。 (三元条件运算符在运算符优先级表中显得非常低。)

因此,无论 NSIM 的值如何,其计算结果均为 0

关于c - 不理解 GCC 编译器行为条件表达式(测试)?值 1 : value 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705305/

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