2013-10-08 36 views
4

C++中的赋值运算符是否返回右值或左值?如果它是左值,那么这两个参数中的哪一个会增加?C++中的赋值运算符是否返回右值或左值?

(a = b)++ 
+0

你试过了吗?一个简单的调试消息应该告诉你答案。 – sjngm

+3

它的工作原理,它为第一个参数返回左值,但也许它是未定义或未指定的行为?或者,也许只适用于这种情况? –

回答

8

它返回一个左值。根据§5.17:

赋值运算符(=)和复合赋值运算符全部为 组从右到左。 全部都需要一个可修改的左值作为它们的左边的 操作数,并返回一个指向左操作数的左值。

如果这些对象具有用户定义的赋值操作符,则它取决于operator=的实现和声明(返回类型)。

所以通常,后

(a = b)++ 

目的a将递增。