c++ - 链接++ 运算符

标签 c++

我注意到在 C++ 中允许使用类似++++i 的东西并将 i 递增 2。但是,不允许使用 i++++ .为什么后者不允许,而前者可以?

最佳答案

后缀 ++ 的结果是纯右值。后缀 ++ 只能应用于可修改的左值。因此,您不能将后缀 ++ 应用于另一个后缀 ++ 的结果。这是有道理的,因为它需要一些对象来修改。运算符的结果只是一个值(操作数原始值的拷贝)- 没有您可以修改的对象。

另一方面,prefix ++ 的结果是一个左值,它也期望一个左值作为它的操作数。因此,您可以将前缀 ++ 的结果传递给另一个 ++

将左值视为表示内存中的对象,将右值视为值(可能来自内存中的对象)可能会有所帮助。 Postfix ++ 需要一个左值,因为它需要一个可以修改的对象。它返回一个右值,因为结果只是一个与任何对象无关的值(因为它是在修改之前从操作数复制的)。前缀 ++ 也想修改它的操作数,所以也需要一个左值。然而,它返回经过修改的对象,它是操作数对象本身,因此它的结果也是一个左值。

关于c++ - 链接++ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21209541/

相关文章:

C++ 将 5 字节结构与缓存行对齐

c++ - gcc 列表节点交换实现过于复杂?

c++ - 简单查询需要几分钟才能在终止/非事件 session 上执行

c++ - 死锁和/或在线程死之前返回

c++ - 将 typedef 制作为文件或子类的本地文件

c++ - 绑定(bind)重载函数

c++ - 我如何区分用户是 root 还是用户是 sudo

C++类反汇编

c++ - 解密部分 AES 加密文件

C++ boost lambda cout <<