dan*_*own 1 c operators comparison-operators
有人可以向我解释原因
iterator += 1;
Run Code Online (Sandbox Code Playgroud)
工作但是
(isexpression < toexpression) ? iterator += byexpression : iterator -= byexpression;
Run Code Online (Sandbox Code Playgroud)
是否在ANSI C中,在visual studio中编写和编译?
我收到以下错误:错误C2106:'+ =':左操作数必须是l值
谢谢,
丹尼
这是因为编译器会解释
(isexpression < toexpression) ? iterator += byexpression : iterator -= byexpression;
Run Code Online (Sandbox Code Playgroud)
如
((isexpression < toexpression) ? iterator += byexpression : iterator) -= byexpression;
Run Code Online (Sandbox Code Playgroud)
因为三元条件运算符 的运算符优先级?:高于-=或者+=.因此,子表达式iterator被绑定?:而不是-=.-=运算符的左侧必须是l值,但?:运算符永远不会产生l值,这就是您得到错误的原因
error C2106: '+=' : left operand must be l-value
Run Code Online (Sandbox Code Playgroud)
永远记住括号是你的朋友.您可以通过将其括起来来删除此错误
(isexpression < toexpression) ? (iterator += byexpression) : (iterator -= byexpression);
Run Code Online (Sandbox Code Playgroud)