| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 727 人关注过本帖
标题:解释下这个问题。
只看楼主 加入收藏
wwxfc
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2010-11-26
结帖率:87.5%
收藏
已结贴  问题点数:5 回复次数:7 
解释下这个问题。
a=b=c;
(a=b)=c;
有什么区别?
2011-01-02 20:33
buffer
Rank: 5Rank: 5
等 级:职业侠客
帖 子:73
专家分:326
注 册:2010-12-31
收藏
得分:1 
赋值运算的结合性是自右至左,所以a=b=c;拆开就是b=c;a=b;
赋值表达式的值是左值,即变量a,因此是可以赋值的。(a=b)=c;拆开来是a=b;a=c;
2011-01-02 23:36
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:1 
从结果来说没区别
2011-01-02 23:47
找工作中
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:114
注 册:2008-5-21
收藏
得分:1 
2楼说的对,3楼说法大部分情况下(对于内建类型)也对。
如果a/b/c是类,那就不一定了。


拿到工资先买个山寨手机
2011-01-03 15:20
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
不是呀,前一种情况 b 的值会变。后一种就不会。
2011-01-04 19:29
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:1 
最好不要这样写,编译器可能产生歧义

小代码,大智慧
2011-01-05 00:27
h370544543
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2011-1-5
收藏
得分:1 
看看赋值运算的规则就行
2011-01-06 03:10
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用点线面在2011-1-5 00:27:35的发言:

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

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

“赋值”的连续调用比较常见,如果表达式本很明了是完全可以这么写的。
2011-01-08 01:12
快速回复:解释下这个问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017161 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved