在同一变量上混合后置和预置递增/递减运算符
可能的重复:
为什么 ++i 被视为左值,但 i++ 不是?
在 C++ 中(也在 C 中),如果我写:
++x--
++(x--)
我得到错误:需要左值作为增量操作数
但是 (++x)--
编译。我很困惑。
Possible Duplicate:
Why is ++i considered an l-value, but i++ is not?
In C++ (and also in C), if I write:
++x--
++(x--)
i get the error: lvalue required as increment operand
However (++x)--
compiles. I am confused.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
后自增和预自增运算符仅适用于左值。
当您调用
++i
时,i
的值会递增,然后返回i
。在 C++ 中,返回值是变量并且是左值。当您调用
i++
(或i--
)时,返回值是i
递增之前的值。这是旧值的副本,并且不对应于变量i
,因此它不能用作左值。无论如何不要这样做,即使它可以编译。
Post- and pre-increment operators only work on lvalues.
When you call
++i
the value ofi
is incremented and theni
is returned. In C++ the return value is the variable and is an lvalue.When you call
i++
(ori--
) the return value is the value ofi
before it was incremented. This is a copy of the old value and doesn't correspond to the variablei
so it cannot be used as an lvalue.Anyway don't do this, even if it compiles.