6

c ++中的赋值运算符是返回右值还是左值?如果是左值,这两个参数中的哪一个会在这里递增?

(a = b)++
4

1 回答 1

9

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

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

如果这些对象有一个用户定义的赋值运算符,那么它取决于operator=.

所以通常,之后

(a = b)++

对象a将递增。

于 2013-10-08T10:07:51.423 回答