标题:请教一道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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-168440-1-1.html




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

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