L值需要C中的错误

时间:2013-03-03 19:52:47

标签: c++ c variables conditional-operator lvalue

我的代码是:

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

在条件运算符行中出现“Lvalue Required”。

你能解释一下为什么吗?

顺便说一句,相同的程序在C ++中完全有效。

2 个答案:

答案 0 :(得分:7)

编写该作业的惯用方法是:

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

如果您坚持按照自己的方式行事,请添加括号:

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

有关为何在C ++中有效但在C中无效的详细信息,请参阅Conditional operator differences between C and C++(感谢@Grijesh Chauhan!)

答案 1 :(得分:1)

括号在C中具有更高的优先级。由于优先级问题,U得到警告。 试试这个..

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