您好,欢迎来到沃锋问答-AI智慧知识互动平台! [
请登录
]
|
[
免费注册
]
沃锋问答-AI智慧知识互动平台
问答首页
问答动态
问题库
问答专家
知识专题
站内公告
全部分类
>
电脑网络
C++程序结果不太明白
用户提问
|
浏览1168次
收藏
|
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个回答
i3 8100搭配ddr4 2400频率和2666频率差距有多大
1个回答
ultra5 225F比i3 12100F单核多核性能分别提升多少
1个回答
剪映怎么导出GIF动图呀?
1个回答
小红书申诉解封话术有哪些,小红书禁封还能恢复吗?
1个回答
主板电池没电 这对电脑有何影响
1个回答
hp12来自6A复印成这样
1个回答
内存是用ddr4还是ddr5好 有什么区别
1个回答
如何操作 用CAD,计算机 天正建筑绘制 画居室平面图 各种各样的建筑图纸 建筑平面图 请提供操作步
1个回答
使用电脑和手机时如何调整姿势
1个回答
长期接触电脑 如何避免手部神经损伤
0
人关注该问题
>>
>>
+1
加载中...