|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 3.10逗号运算符的一个问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
667
人关注过本帖
标题:
3.10逗号运算符的一个问题
只看楼主
加入收藏
wxz11191975
等 级:
新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:
85.29%
楼主
收藏
已结贴
√
问题点数:5 回复次数:8
3.10逗号运算符的一个问题
以下程序段:
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);
答案是:执行输出后的结果是0,0,5
谁可以帮我具体讲一下逗号表达式的值与其中变量如a,c的值?谢谢。
搜索更多相关主题的帖子:
问题
表达式
2011-08-23 20:49
举报帖子
使用道具
赠送鲜花
编程达人
等 级:
论坛游民
帖 子:62
专家分:66
注 册:2011-8-11
第
2
楼
收藏
得分:1
逗号表达式取最后一个表达式的值,如:表达式1,表达式2
则逗号表达式的值就是表达式2的值。上面第一个逗号表达式就是把5赋给c,第二个逗号表达式又是由两个表达式构成的逗号表达式,把b的值赋给a,所以a还是0
2011-08-23 21:05
举报帖子
使用道具
赠送鲜花
voidx
来 自:邯郸
等 级:
火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
第
3
楼
收藏
得分:1
',' 对执行顺序没有任何影响,只是用于分隔两个表达式。
用 ',' 分隔的表达式按照他们出现的顺序执行。
变量定义、函数参数定义和参数传递的时候遇到的 ',' 是另一种语义。
c=(a-=a-5),(a=b,b+3); 与下面的代码相同:
a -= a - 5;
c = a;
a = b;
b + 3;
[
本帖最后由 voidx 于 2011-8-24 01:17 编辑
]
2011-08-23 21:07
举报帖子
使用道具
赠送鲜花
ai8343512
等 级:
论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
第
4
楼
收藏
得分:1
我对c = 5表示很不解……
从整体上看,逗号表达式并没有改变b的值,b + 3就应该等于3啊,可为什么等于5???不解,真不解……
思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-23 21:15
举报帖子
使用道具
赠送鲜花
slhlili
等 级:
新手上路
帖 子:1
专家分:1
注 册:2011-4-18
第
5
楼
收藏
得分:1
c=(a-=a-5) 等价int d ;
d = a - 5 ;
// a = 0 , 所以d = -5
a -= d ;
// a = a -d , 所以 a-d = 5 , 则a = 5;
c = a ;
// c = 5
楼上的这下知道c为什么是5了
2011-08-23 21:29
举报帖子
使用道具
赠送鲜花
king_kong
来 自:山东
等 级:
论坛游民
帖 子:71
专家分:55
注 册:2010-9-9
第
6
楼
收藏
得分:1
首先,c=(a-=a-5)
等同于c=(a=(a-a+5)),这样,a的值为5,然后赋值给c
即c=5,此时a也等于5;
然后,(a=b,b+3);
这个好理解 , 第一步是
a=b,
这样a=b=0;第二步 ,b+3,但是没赋值
所以还是0
2011-08-23 21:29
举报帖子
使用道具
赠送鲜花
QQ346957135
等 级:
黑侠
帖 子:148
专家分:658
注 册:2011-8-9
第
7
楼
收藏
得分:1
括号的优先级最高,先第一个括号:先计算a-=a-5,a初值为0,a-5等于-5,又a-=-5,得a为5.然后就是逗号表达式了,形式为:c=5,(a=b,b+3);括号优先级最高,括号内又是一个逗号表达式,结果为a=0,c=5,b=0(b值不变)。仔细看书吧,书上有
A real warrior never quits.
2011-08-23 21:56
举报帖子
使用道具
赠送鲜花
Hujc71
等 级:
论坛游民
帖 子:49
专家分:65
注 册:2010-3-31
第
8
楼
收藏
得分:1
貌似楼主把c=(a-=a-5),(a=b,b+3);与c=((a-=a-5),a=b,b+3);混为一团了,后者与楼主想的思路一样,前者其实是分开的两个表达式,但(a=b,b+3)才是逗号表达式!
2011-08-24 08:31
举报帖子
使用道具
赠送鲜花
lin471306489
等 级:
业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
第
9
楼
收藏
得分:1
好好看看书啦,逗号运算只要细心点去分析就能做。
要自己做才能有进步的
2011-08-24 10:26
举报帖子
使用道具
赠送鲜花
9
1/1页
1
快速回复:
3.10逗号运算符的一个问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.023496 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved