#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/