- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
12小时前关门了。
Improve this question
在c++中运算符=返回值吗?
你可以像这样做int a, b, c; int d = a = b = c = 1;
而且,所有的变量都等于1吗?它在所有的操作系统上都是这样工作的吗?
12小时前关门了。
Improve this question
在c++中运算符=返回值吗?
你可以像这样做int a, b, c; int d = a = b = c = 1;
而且,所有的变量都等于1吗?它在所有的操作系统上都是这样工作的吗?
2条答案
按热度按时间wdebmtf21#
对于内置类型,赋值运算符的应用(除了写入新值的副作用之外)计算为对赋值左侧的引用。
对于普通的(非volatile)变量,比如问题中的变量,这将导致所有变量都持有
1
。如果链的中间包含volatile左值,你将从该volatile左值中读取,而不是简单地使用前面链式赋值中的值。在标准中(截面
[expr.ass]
):赋值运算符(=)和复合赋值运算符都是从右到左分组的。它们都需要一个可修改的左值作为左操作数;它们的结果是左操作数类型的左值,引用左操作数。
http://www.eel.is/c++draft/expr.ass
对于具有用户定义的
operator=()
的类型,它取决于operator=()
主体的返回类型和返回表达式。按照约定,用户定义的operator=()
遵循与内置类型相同的规则...但是一些专用类型将偏离该约定。t1rydlwq2#
是,a、B、c、d的值将等于1