我注意到在 C++ 中允许使用类似++++i
的东西并将 i
递增 2。但是,不允许使用 i++++
.为什么后者不允许,而前者可以?
最佳答案
后缀 ++
的结果是纯右值。后缀 ++
只能应用于可修改的左值。因此,您不能将后缀 ++
应用于另一个后缀 ++
的结果。这是有道理的,因为它需要一些对象来修改。运算符的结果只是一个值(操作数原始值的拷贝)- 没有您可以修改的对象。
另一方面,prefix ++
的结果是一个左值,它也期望一个左值作为它的操作数。因此,您可以将前缀 ++
的结果传递给另一个 ++
。
将左值视为表示内存中的对象,将右值视为值(可能来自内存中的对象)可能会有所帮助。 Postfix ++
需要一个左值,因为它需要一个可以修改的对象。它返回一个右值,因为结果只是一个与任何对象无关的值(因为它是在修改之前从操作数复制的)。前缀 ++
也想修改它的操作数,所以也需要一个左值。然而,它返回经过修改的对象,它是操作数对象本身,因此它的结果也是一个左值。
关于c++ - 链接++ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21209541/