在c++中运算符=返回什么?[已关闭]

42fyovps  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(112)

12小时前关门了。
Improve this question
在c++中运算符=返回值吗?
你可以像这样做int a, b, c; int d = a = b = c = 1;
而且,所有的变量都等于1吗?它在所有的操作系统上都是这样工作的吗?

wdebmtf2

wdebmtf21#

对于内置类型,赋值运算符的应用(除了写入新值的副作用之外)计算为对赋值左侧的引用。

c = 1; // assignment
b = c; // assignment
a = b; // assignment
int d = a; // initialization

对于普通的(非volatile)变量,比如问题中的变量,这将导致所有变量都持有1。如果链的中间包含volatile左值,你将从该volatile左值中读取,而不是简单地使用前面链式赋值中的值。
在标准中(截面[expr.ass]):
赋值运算符(=)和复合赋值运算符都是从右到左分组的。它们都需要一个可修改的左值作为左操作数;它们的结果是左操作数类型的左值,引用左操作数
http://www.eel.is/c++draft/expr.ass
对于具有用户定义的operator=()的类型,它取决于operator=()主体的返回类型和返回表达式。按照约定,用户定义的operator=()遵循与内置类型相同的规则...但是一些专用类型将偏离该约定。

t1rydlwq

t1rydlwq2#

是,a、B、c、d的值将等于1

相关问题