| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1131 人关注过本帖
标题:这句话应该如何理解
只看楼主 加入收藏
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
收藏
得分:0 
逗号表达式 y=2+(x+=x++,x+8,++x);
是这样的.y=2+(x+=x++==10;x+8,++x==12);所以y=12+2=14;



[ 本帖最后由 五当家 于 2010-12-7 13:28 编辑 ]

经验积累中............
2010-12-07 13:27
ququguoguo
Rank: 2
等 级:论坛游民
帖 子:73
专家分:90
注 册:2010-10-20
收藏
得分:0 
找乐子唉
2010-12-07 14:18
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:0 
不准说我找乐子 我真是不会了来求助的!

我是初学者
2010-12-07 14:38
xx123321
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2010-12-1
收藏
得分:0 
以下是引用xzy199999在2010-12-7 13:13:19的发言:

x+=x++里面,x++不执行么?

2010-12-07 15:14
qinbiao
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-12-6
收藏
得分:0 
在C中有一个顺序点的概念,也就是在 “;”或"一个判断条件"等结束后所有的运算都结束,包括++ --,所以
y=2+(x+=x++,x+8,++x);由于(x+=x++,x+8,++x)是个逗号表达式所以x+=x++在进入第二个表达式x+8也就是第一个顺序点“,”前结束全部运算
顾x进入x+8时x=11,第二个顺序点","前x没有被赋予新值直接进入第三个表达式++x 由于++x意思是先运算赋新值所以x=12到此逗号表达式取最后一个值所以y=2+12=14 要注意的是在y=2+(x+=x++,x+8,++x);如果是y=2+(x+=x++,x+8,x++);那么x++是后置运算就变成y=2+11=13原因是在逗号表达式中最后一个表达式后面没有顺序点 由于x++最近的顺序点是“;”且代表整个表达式y=2+(x+=x++,x+8,x++)在“;”前运算完后x++再自增1.
所以y=2+(x+=x++);结束";"前的全部运算后x再自增1,y就是12啦
刚初学 你可以试着分别运行 y=2+(x++);  y=(x++,x++);  y=2+(x++,x++,x++); 就明白了
2010-12-07 15:31
xshy2051
Rank: 2
等 级:论坛游民
帖 子:27
专家分:33
注 册:2010-9-16
收藏
得分:0 
楼上说的好详细!顿悟,谢谢!~
2010-12-07 17:01
hpj150
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-12-7
收藏
得分:0 
菜鸟飞过
2010-12-07 19:52
fy7518716
Rank: 2
等 级:论坛游民
帖 子:8
专家分:24
注 册:2008-6-17
收藏
得分:0 
  int x=5,y;
  y=2+(x+=x++,x+8,++x);

(x+=x++,x+8,++x)  这样的表达式是取最后一个表达式的值,前面的也会执行。
先执行 x+=x++ 后 x=11
执行x+8  没有改变x的值  依旧是 x=11
然后取 ++x的值是12
然后 y=14

y=2+(x+=x++)
可以这个样子该以下你九明白来 y=2+((x+=x)++)其实这句完来之后 x=11  , 后面2+到的值是10
自己仔细琢磨以下


其实这样的问题有时候是和编译器有关的。最好的办法是把程序编译成汇编代码,然后读汇编代码就会很清楚来。 不同的编译器编译出的汇编代码是有可能不一样的。
2010-12-08 15:47
a343637412
Rank: 7Rank: 7Rank: 7
来 自:そ ら
等 级:黑侠
帖 子:357
专家分:620
注 册:2010-9-26
收藏
得分:0 
以下是引用xzy199999在2010-12-7 14:38:28的发言:

不准说我找乐子 我真是不会了来求助的!
积点口德,知道也别说出来
2010-12-08 15:50
lizhaokun
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-10-14
收藏
得分:0 
这个和具体编译环境有关系吧
2010-12-08 16:08
快速回复:这句话应该如何理解
数据加载中...
 
   



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

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