2

我的代码是:

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

这是条件运算符行中的“需要左值”。

你能解释一下为什么吗?

顺便说一句,同一个程序在 C++ 中完美运行。

4

2 回答 2

7

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

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

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

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

有关为什么这在 C++ 中有效但在 C 中无效的详细信息,请参阅C 和 C++ 之间的条件运算符差异(感谢@Grijesh Chauhan!)

于 2013-03-03T19:54:44.977 回答
1

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

(a >= 5) ? (b = 100) : (b = 200);
于 2013-03-03T21:54:56.647 回答