C++中 实参值改变后形参的改变

intfun(intx,inty){returnx*y;}intmain(){intk=5;cout<<fun(k++,++k)<<endl;return0;}为什么输出... int fun(int x,int y)
{
return x*y;
}

int main()
{
int k = 5;
cout << fun(k++,++k) << endl;
return 0;
}

为什么输出42?
展开
 我来答
呆萌小咖77
2016-10-31 · TA获得超过797个赞
知道小有建树答主
回答量:813
采纳率:96%
帮助的人:154万
展开全部
你没明白啥叫不能改变,或者说这个所谓的改变,是有语境的。

你在调用完sort后,打印一下xyz的值看看,而不要在sort函数里面打印。在sort函数里面打印的,其实还是传进去的参数值,而不是main中的xyz。
追问
???你回答的是什么,z哪里来的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ilvwhy
2016-10-31 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.7万
采纳率:81%
帮助的人:2811万
展开全部
将K值运算好以后传入函数,一个是6一个是7。函数返回42
更多追问追答
追问
7怎么来的?
追答
k不是自加了2次么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
My_Persistence
2016-10-31 · TA获得超过3467个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:430万
展开全部
#include <stdio.h>
int fun(int x,int y)
{
printf("x=%d  y=%d\n",x,y);
return x*y;
}

int main()
{
int k = 5;
printf("%d\n",fun(k++,++k));
//cout << fun(k++,++k) << endl;
return 0;
}

x=6  y=7

42

从运行结果来看的话,传给形参x的值是6,传给形参y的值是7,所以运行结果是42了。

更多追问追答
追问
为什么?参数值的传递不是从右到左吗?为什么y的值是7?
追答
参数值的传递怎么是从右到左呢?从运行结果来看的话,你这种观点显然是不成立的嘛!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式