| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 660 人关注过本帖
标题:再请教个问题啦,谢谢大家帮助
只看楼主 加入收藏
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
再请教个问题啦,谢谢大家帮助
main()
{ int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
getch();
}
这是书上的习题,主要是说明逗号运算符的,按照理解,y应该是b+c=10啊,可结果是y和x 一样都是6,替换表达式x的赋值发现y值完全是跟着x值走的,这不就和书上正好相反了吗?
我的是WIN-TC,其内核应该是TC2.0吧,请大家指点指点
搜索更多相关主题的帖子: 表达式 
2010-04-13 11:04
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
请大家赐教!我成长起来后也会很乐意帮助大家的
2010-04-13 11:24
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
没人知道么:(
2010-04-13 12:18
一口三个汉堡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:155
专家分:525
注 册:2010-3-21
收藏
得分:20 

y=(x=a+b),(b+c);//根据优先级来判断,‘()’的优先级高于‘,’的优先值,赋值运算符又高于逗号优先级
所以运行就是这样:
x=a+b;
y=x;
b+c;//没用了。。
逗号的优先级是最低的。。。
要达到你要的效果就这样用
y=(x=a+b,b+c);


坚持做对的事情,而不是容易的事情。
2010-04-13 12:34
共饮长江水
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:47
注 册:2010-3-16
收藏
得分:0 
y=(x=a+b),(b+c);出错了把
应该是y={(x=a+b),(b+c)},这样就应该没什么问题了
原来的不是一个逗号表达式,只是把x的值付给y
2010-04-13 12:34
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
谢谢楼上两位!完全明白了!看来还是自己对于运算符优先级没有彻底理解透才会没想明白,也太盲从书了。
能有各位的相助,真是非常的开心!!
2010-04-13 12:48
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
楼主太大方了,这小问题还给20分,哎,来的太迟了
2010-04-13 18:39
蓝色¤幻想
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2010-3-19
收藏
得分:0 
y=(x=a+b),(b+c);
,前是一个式子
,后是一个式子
整个式子的结果应该是b+c的结果
但是y并没有被赋予b+c的值
2010-04-13 23:02
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
呵呵,再次谢谢楼上,问题可能对你们很简单,我是新手,很菜,但是,因为不会这个问题,对我来说就是100%的难度,任何人能够帮助我理解清楚,就都是我的老师!
2010-04-14 10:02
缘中月
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:50
专家分:18
注 册:2010-2-25
收藏
得分:0 
回复 9楼 account
和LZ同感
2010-04-14 12:33
快速回复:再请教个问题啦,谢谢大家帮助
数据加载中...
 
   



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

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