注册 登录
编程论坛 C++教室

解释下这个问题。

wwxfc 发布于 2011-01-02 20:33, 727 次点击
a=b=c;
(a=b)=c;
有什么区别?
7 回复
#2
buffer2011-01-02 23:36
赋值运算的结合性是自右至左,所以a=b=c;拆开就是b=c;a=b;
赋值表达式的值是左值,即变量a,因此是可以赋值的。(a=b)=c;拆开来是a=b;a=c;
#3
lucky5635912011-01-02 23:47
从结果来说没区别
#4
找工作中2011-01-03 15:20
2楼说的对,3楼说法大部分情况下(对于内建类型)也对。
如果a/b/c是类,那就不一定了。

#5
pangding2011-01-04 19:29
不是呀,前一种情况 b 的值会变。后一种就不会。
#6
点线面2011-01-05 00:27
最好不要这样写,编译器可能产生歧义
#7
h3705445432011-01-06 03:10
看看赋值运算的规则就行
#8
pangding2011-01-08 01:12
以下是引用点线面在2011-1-5 00:27:35的发言:

最好不要这样写,编译器可能产生歧义

一般可以这么写。编译器有优先级和结合性,歧义是不会产生的。

“赋值”的连续调用比较常见,如果表达式本很明了是完全可以这么写的。
1