您好,欢迎来到沃锋问答-AI智慧知识互动平台! [
请登录
]
|
[
免费注册
]
沃锋问答-AI智慧知识互动平台
问答首页
问答动态
问题库
问答专家
知识专题
站内公告
全部分类
>
电脑网络
C++程序结果不太明白
用户提问
|
浏览1138次
收藏
|
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个回答
目前想做3C电子产品 迷你PC 笔记本电脑 有没有国内的工厂自己有品牌可以做授权线下渠道的
1个回答
来自海外的接受度还蛮高的" target="_blank" href="http://wenda.zanchen.net/q-85484.html">minipc主机有市场空间嘛 貌似
来自海外的接受度还蛮高的
1个回答
速达进销存软件有人用过吗好不好用啊
1个回答
请问图片中的柱形图怎样做
1个回答
这是什么图片
1个回答
来自务的类型与应用场景都有哪些" target="_blank" href="http://wenda.zanchen.net/q-85466.html">代驾服
来自务的类型与应用场景都有哪些
1个回答
来自吗 咋成兆了" target="_blank" href="http://wenda.zanchen.net/q-85460.html">1M不是1百万
来自吗 咋成兆了
1个回答
速达进销存管致电永资溶特理软件
1个回答
腾讯的mflac来自与苹果的ALAC 都是加密的格式吗
1个回答
速达软件价格怎么样
0
人关注该问题
>>
>>
+1
加载中...