您好,欢迎来到沃锋问答-AI智慧知识互动平台! [
请登录
]
|
[
免费注册
]
沃锋问答-AI智慧知识互动平台
问答首页
问答动态
问题库
问答专家
知识专题
站内公告
全部分类
>
电脑网络
C++程序结果不太明白
用户提问
|
浏览1142次
收藏
|
2020/06/15 05:02
满意回答
检举
|
2020/06/15 05:16
首先我们看下m+=f(g(m));先看下g(m)==>return++a;也就是返回值为++m,m=m+1=1再调用f,f(1)返回为2最后m=m+2=3要注意的是intg(int&a)会改变调用参数a的值,也就是调用后m从0变为1而对n+=f(f(n));f(0)=1,f(1)=2n+=f(2)=0+2=2f的调用,不会改变调用参数a的值的
评论(0)
加载中...
匿名
秀才
|
采纳率100%
|
回答于 2020/06/15 05:16
其他回答(3)
其他
#include <iostream.h> int f(int a){ return ++a; } int g(int& a){ return ++a; } void main(){ int m=0,n=0; m+=f(g(m)); n+=f(f(n)); cout<<"m="<<m<<endl; cout<<"n="<<n<<endl; }程序输出结果为:m=3 n=2
评论(0)
回答于 2020/06/15 06:19
加载中...
其他
① n+=f(f(n)); 即 n=n+f(f(n)); 同一般的函数调用一样,执行过程如下:先执行f(n) 实参n=0传递给a,返值为++a=0+1=1;再执行f(1); 同理,返值为++a=1+1=2;最后执行n=n+f(f(n))=0+2=2。执行 cout<<"n="<<n<<endl;输出为:n=2。② m+=f(g(m)); 即 m=m+f(g(m)); 先执行g(m) ,实参m=0传递给a,返值为++a=0+1=1,注意到形参是一个引用,所以同时有 m=1; 再执行f(1); 同理,返值为++a=1+1=2;最后执行m=m+f(g(m))=1+2=3。执行 cout<<"m="<<m<<endl;输出为:m=3。程序的运行结果正如上述分析:
评论(0)
回答于 2020/06/15 05:48
加载中...
其他
g(int&a)中&表示传地址,所以g(m)返回1的同时main方法中的m也变成了1,则m+=f(g(m)),即为m=m+f(g(m))=1+f(1)=3;n+=f(f(n))没有传地址,所以n一直为0,两个f函数则返回两个自增结果了
评论(0)
回答于 2020/06/15 05:23
加载中...
相关已解决
1个回答
派力肯大型箱 如1650型 是否支持加装拉杆 轮子等模块
1个回答
电脑支出付总是在检测支付环境怎么办呢
1个回答
suda软件怎么进行数据备份
1个回答
不知道怎么
1个回答
墨兹卡数码口琴如何连接MIDI线到电脑
1个回答
FT2 4分体微电脑温控器说明书
1个回答
体验免来自费的云主机服务 从阿贝云开始
1个回答
映美打印机出现打印头起始位置错误怎么解决
1个回答
玩电脑游戏总有人骂人是什么样的人 垃圾人
1个回答
微信支付比较方便对不 充个话费 游戏也尼静低界施烈听种呢妒比较方便
0
人关注该问题
>>
>>
+1
加载中...