gpt4 book ai didi

c - 为什么这个C程序不能编译?

转载 作者:行者123 更新时间:2023-11-30 20:47:20 26 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
int a=10,b;
a>=5?b=100:b=200;
printf("%d",b);
}

错误是什么?

它的工作原理如下:

#include<stdio.h>
int main()
{
int a=10,b;
a>=5?(b=100):(b=200);
printf("%d",b);
}

为什么需要括号?

最佳答案

赋值的优先级最低,你想要做的事情:

a >=5 ? (b=100) : (b=200);
<小时/>

您的原始表达含义如下:

(a >= 5 ? b = 100 : b) = 200;

在 C 中,三元运算符 ?: 不返回左值,因此它不能将 200 分配给 ?: 的结果。这不是你所期望的。

<小时/>

以这种方式设置运算符优先级,以便表达式:

b = a >= 5 ? 100 : 200;

b = (a >= 5 ? 100 : 200);

不是

(b = a) >= 5 ? 100 : 200;

关于c - 为什么这个C程序不能编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25339976/

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