+ =必须是Visual C中的l值

时间:2013-11-21 17:41:19

标签: c operators comparison-operators

有人可以向我解释原因吗

iterator += 1;

工作但是

(isexpression < toexpression) ? iterator += byexpression : iterator -= byexpression;

在ANSI C中,是否在visual studio中编写和编译?

我收到以下错误:错误C2106:'+ =':左操作数必须为l值

谢谢,

丹尼

1 个答案:

答案 0 :(得分:5)

这是因为编译器解释

(isexpression < toexpression) ? iterator += byexpression : iterator -= byexpression;

as

((isexpression < toexpression) ? iterator += byexpression : iterator) -= byexpression;  

因为三元条件运算符?: operator precedence高于-=+=。因此,子表达式iterator绑定到?:而不是-=-=运算符的左侧必须是l值,但?:运算符永远不会产生l值,这就是您收到错误的原因

error C2106: '+=' : left operand must be l-value    

永远记住括号是你的朋友。您可以通过将其括号括起来删除此错误

(isexpression < toexpression) ? (iterator += byexpression) : (iterator -= byexpression);