您好,欢迎来到沃锋问答-AI智慧知识互动平台! [
请登录
]
|
[
免费注册
]
沃锋问答-AI智慧知识互动平台
问答首页
问答动态
问题库
问答专家
知识专题
站内公告
全部分类
>
电脑网络
C++程序结果不太明白
用户提问
|
浏览1151次
收藏
|
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个回答
请教如何修改
1个回答
问题请看下图
1个回答
获计脑平车显示屏按钮不能按 机台不走了 是什么原因" target="_blank" href="http://wenda.zanchen.net/q-88877.html">电
获计脑平车显示屏按钮不能按 机台不走了 是什么原因
1个回答
excelvba自定义函数的问题 帮忙来自进行解答修改
1个回答
昆明优创软件开发有限公司怎么样 其法定代表人是谁
1个回答
为何要记录基线功能状态
1个回答
吞咽功能评估 VFSS或FEE甚事令至做装下蒸既价S 如何进
1个回答
经常接触打印机 复印机等办公设备产生的粉尘 会不会增加来自脱髓鞘相关的异常风险
1个回答
移动互联网 就是指的手机上网 是吗
1个回答
kfqqcom客服在线咨询
0
人关注该问题
>>
>>
+1
加载中...