有人可以向我解释原因吗
iterator += 1;
工作但是
(isexpression < toexpression) ? iterator += byexpression : iterator -= byexpression;
在ANSI C中,是否在visual studio中编写和编译?
我收到以下错误:错误C2106:'+ =':左操作数必须为l值
谢谢,
丹尼
答案 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);