在同一变量上混合后置和预置递增/递减运算符

发布于 2024-09-10 18:55:12 字数 330 浏览 6 评论 0原文

可能的重复:
为什么 ++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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叹沉浮 2024-09-17 18:55:12

后自增和预自增运算符仅适用于左值。

当您调用 ++i 时,i 的值会递增,然后返回 i。在 C++ 中,返回值是变量并且是左值。

当您调用i++(或i--)时,返回值是i 递增之前的值。这是旧值的副本,并且不对应于变量i,因此它不能用作左值。

无论如何不要这样做,即使它可以编译。

Post- and pre-increment operators only work on lvalues.

When you call ++i the value of i is incremented and then i is returned. In C++ the return value is the variable and is an lvalue.

When you call i++ (or i--) the return value is the value of i before it was incremented. This is a copy of the old value and doesn't correspond to the variable i so it cannot be used as an lvalue.

Anyway don't do this, even if it compiles.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文