c++ 求每一步i的值,请解释一下怎样得到结果的?谢谢

intx=2,y=x+30;structA{staticintx;inty;public:operatorint(){returnx+y;}Aoperator++(int... int x=2, y=x+30;
struct A{
static int x;
int y;
public:
operator int( ){ return x+y; }
A operator ++(int){ return A(x++, y++); }
A(int x=::x+2, int y=::y+3){ A::x=x; A::y=y; }
int &h(int &x);
};
int &A::h(int &x)
{
for(int y=1; y!=1 || x<201; x+=11, y++)
if(x>200) { x-=21; y-=2;}
return x-=10;
}
int A::x=23;
void main( ){
A a(54, 3), b(65), c;
int i, &z=i, A::*p=&A::y;
i=b.x;//……………………………①
z=a.x;//……………………………②
i=c.*p;//……………………………③
i=a++;//……………………………④
i=::x+c.y;//……………………………⑤
i=a+b;//……………………………⑥
b.h(i)=7;//……………………………⑦
}
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
taobingxue
2015-01-20 · TA获得超过2.3万个赞
知道大有可为答主
回答量:1148
采纳率:80%
帮助的人:873万
展开全部
含义区分:
A::x,A定义域下的x,是A的静态变量,所有的A实例共用
A::y,A定义域下的y,每个A实例有自己单独的y
::x,::y 全局变量,即程序开头定义的int x=2, y=x+30=32;
h(int &x)函数中x,y局部有重新定义,所以是局部变量

A a(54,3)
A.x = 54;
a.y = 3;

b(65);
A.x = 65;
b.y = 32+3 = 35;

c;
A.x = 2+2 = 4;
c.y = 35;

i=b.x;//……………………………①
b.x = A.x = 4;
z=a.x;//……………………………②
a.x = A.x = 4;
i=c.*p;//……………………………③
c.*p = c.y = 35;
i=a++;//……………………………④
调用a 中调用 A(x++, y++),即A(4, 3),此时A.x = 5, a.y = 4
调用过程中 A.x = 4; 新y=3 <- A.x被刷新了
在进入int() 返回4+3 = 7
i = 7;
i=::x+c.y;//……………………………⑤
::x+c.y = 2 + 35 = 37
i=a+b;//……………………………⑥
a = A.x + a.y = 4 + 4 = 8
b = A.x + b.y = 4 + 35 = 39
a + b = 47
b.h(i)=7;//……………………………⑦
调用h(47),返回的是输入参数x的引用,即i的引用,结果使得 i = 7;
由于x,y是h函数的局部变量,所以未改变b中的相关参数等等
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bLIZZARD40
2015-01-23
知道答主
回答量:22
采纳率:0%
帮助的人:6.2万
展开全部
A a(54, 3), b(65), c;
int i, &z = i, A::*p = &A::y;
i = b.x;//……………………………① 4
z = a.x;//……………………………② 4
i = c.*p;//……………………………③ 35
i = a++;//……………………………④ 7
i = ::x + c.y;//……………………………⑤37
i = a + b;//……………………………⑥ 47
b.h(i) = 7;//……………………………⑦ 7
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式