C程序错误“左侧操作数”

时间:2014-04-07 14:59:19

标签: c

任何人都可以解释为什么这行代码错了吗?

int n = 0, y = 1;
y == 1 ? n = 0 : n = 1;

"Lvalue required as left operand of assignment "

的错误为"n=1"

3 个答案:

答案 0 :(得分:2)

声明

(y == 1 ? n = 0 : n) = 1;  

被解释为因为n?:运算符绑定,因为它具有更高的优先级 =需要l值作为其左操作数,而?:返回r值 试试这个

y == 1 ? n = 0 : (n = 1);   

n = y == 1 ? 0 : 1;

答案 1 :(得分:1)

您应该使用:

n = y==1 ? 0 :1

根据C标准,如果尝试将条件运算符的结果用作左值,则行为未定义。

答案 2 :(得分:0)

您可以使用三元运算符进行分配,例如:

int n = 0, y = 1;
n = y == 1 ? 0 : 1;