您好,欢迎来到沃锋问答-赞臣社区旗下知识互动平台! [
请登录
]
|
[
免费注册
]
沃锋问答-赞臣社区旗下知识互动平台
问答首页
问答动态
问题库
问答专家
知识专题
站内公告
全部分类
>
电脑网络
C++程序结果不太明白
电脑网络
360U3212737460
|
浏览1090次
收藏
|
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)
加载中...
360U3212737460
秀才
|
采纳率100%
|
回答于 2020/06/15 05:16
其他回答(3)
ygl9909
#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
加载中...
360U268
① 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
加载中...
whoami1
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
加载中...
相关已解决
4个回答
用qq登陆注册王者荣耀时,qq好友来自会收到提示吗?
1个回答
CPUi5-13400f显卡华硕4070主板华硕B760MKD来自5这个配置合适吗?
4个回答
这电脑怎么样,怎么升级
1个回答
pcb喷印机字来自符问题点是什么?
1个回答
一登录,就出现身份与密码不符,我也不知道是啥问题
1个回答
什么是C++
1个回答
如何不被设计?
1个回答
华硕B150M-ETSERIES
1个回答
怎么优酷视频来自下载的都不是MP4了
1个回答
进制转换c++代码小美刚刚学习了十六进制,她觉得很速安肉得群会互板烧形有趣,想到是不是还有更大的进制
0
人关注该问题
>>
>>
+1
加载中...