| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1629 人关注过本帖
标题:请教一道c++运算题,清华网络教程中的一道习题
只看楼主 加入收藏
流川枫2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-9-9
收藏
得分:0 
以下是引用Undeadsprout在2007-9-7 18:15:54的发言:
我现在认为应该先是:x+=x,得到x=10
x++得到11
++x得到12
y=2+12
+=,自加++的优先级是一样的,应该从左向右算的,对不对?

+=与++优先级一样高,且这两个运算符的结合性均是从右向左,
即先计算++。。。

2007-09-09 10:54
xlh5225
Rank: 2
等 级:论坛游民
威 望:2
帖 子:188
专家分:25
注 册:2007-8-14
收藏
得分:0 

无了的程序~~~~

2007-09-09 16:13
sifutian
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-9-9
收藏
得分:0 
x+=x++;
由于++的优先级高于+=,所以先算++。
假设把+=写成=,表示出来就是,x=(x++)+x;
但由于是后缀自增,所以在等式中,先取x的原值,即中边的x的值先是5,
然后x++,后面的x自增为6,所以x=11.
不知道我的解释你是否满意
2007-09-09 17:02
qwl1982
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-3
收藏
得分:0 
x+=x++ 其实就等于 x+=x,x++;
x++是先参与运算然后再自加~
int y=2+(x+=x++,x+8,++x);可以理解为int y=2+(x+=x,x++,x+8,++x);
所以只写int y=2+(x+=x++);的话,y的值是12。

int y=2+(x+=x/*x的值是10*/ ,x++/*x的值是11*/,x+8/*x的值不变*/,++x/*x的值是12*/);

这样就理解啦


2007-09-09 20:30
绝种好小伙
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-9-3
收藏
得分:0 
回复:(Undeadsprout)回复:(天堂落日)y=2+(x+=x+...

#include <iostream.h>
void main()
{
int x=5;
int y=2+(x+=x++,x+8,++x); // ①x+=x 得到10;②++ 得到11;③++x 得到12
cout<<y<<endl;
}


Andy
2007-09-09 21:39
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 

老问题了,而且经久不衰。


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-09-09 22:20
snakeImao
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-9-10
收藏
得分:0 

++ 的优先级比 += 高。

由于++是变量先使用后再加 1 ,所以 x+=x++,应该是先算x+=x,即得:x=10,再算x=x+1,得 x=11,++x=12

[此贴子已经被作者于2007-9-10 14:48:33编辑过]

2007-09-10 14:40
virusswb
Rank: 1
等 级:新手上路
威 望:1
帖 子:342
专家分:0
注 册:2005-8-6
收藏
得分:0 
回复:(Undeadsprout)请教一道c++运算题,清华网络教...
x+=x++就是 x=x+(x++)这句完了之后x就是11,

jorden008@
2007-09-10 16:39
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 
++的优先级 比+=高!(既然是清华的题,就在清华的书中找到这优先级关系.)

2007-09-10 18:47
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
以下是引用天堂落日在2007-9-7 17:22:45的发言:
y=2+(x+=x++,x+8,++x);
首先是x++=6,此时x=5,所以x+=x++应该是11
然后运行x+8=19
最后是++x,此时x=12
y=2+(11,19,12)=14

是不是这样的?

我觉得这个好象是对的,理解的蛮深刻的


学习需要安静。。海盗要重新来过。。
2007-09-11 09:28
快速回复:请教一道c++运算题,清华网络教程中的一道习题
数据加载中...
 
   



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

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