我的代码是:左值所需错误使用C
#include<stdio.h>
int main() {
int a=10, b;
a >= 5 ? b=100 : b=200;
printf("%d %d", a, b);
return 0;
}
在这里,在有条件的运营商的线路来一个“左值要求”。
你能解释一下为什么吗?
顺便说一句,同一个程序在C++中是完美的。
我的代码是:左值所需错误使用C
#include<stdio.h>
int main() {
int a=10, b;
a >= 5 ? b=100 : b=200;
printf("%d %d", a, b);
return 0;
}
在这里,在有条件的运营商的线路来一个“左值要求”。
你能解释一下为什么吗?
顺便说一句,同一个程序在C++中是完美的。
编写任务的惯用方法是:
b = (a >= 5) ? 100 : 200;
如果你坚持保留它自己的方式,加括号:
(a >= 5) ? (b=100) : (b=200);
详情为什么这部作品在C++而不是在C,请参阅Conditional operator differences between C and C++(谢谢@Grijesh Chauhan!)
是的。它正在用圆括号解决......但较老的仍在C++中工作。那么为什么C中有错误呢? – 2013-03-03 19:57:25
@HimanshuAggarwal [**和C++ **之间的条件运算符区别](http://stackoverflow.com/questions/1082655/conditional-operator-differences-between-c-and-c) – 2013-03-03 20:03:35
@GrijeshChauhan:真棒链接,谢谢! – NPE 2013-03-03 20:04:36
圆括号在C中具有更高的优先级。由于优先级问题,您会收到警告。 试试这个..
(a >= 5) ? (b = 100) : (b = 200);
尝试添加圆括号。 '='具有相当低的优先级。 – 2013-03-03 19:54:17
是的。它正在用圆括号解决......但较老的仍在C++中工作。我只想知道为什么C中存在错误的原因? – 2013-03-03 19:58:10
因为c不是C++吗? – 2013-03-03 19:59:57