#include<iostream>
int fun(int &x,int y=10)
{
if(x%y==0)
return (++x);
else
return (y--);
}
int main()
{
int p=10,q=13;
q=fun(p,q);
cout<<p<<q<<endl;
q=fun(q);
cout<<p<<q<<endl;
q=fun(p);
cout<<p<<q<<endl;
return 0;
}
如下所示的输出如下:
1013
1010
1111
但是当我尝试使用笔和纸来解决它时,我被困住了。请告诉我如何达到正确的输出,以保持我的概念清晰。
答案 0 :(得分:0)
p = 10 q = 13
第一次通话 p = 10,q = 13 p通过引用传递返回将是y--因为它是后递减的,它将返回13
第二次电话
q = 13 通过ref x = 13 y = 10
返回将是y--这是= 10而不是9,因为它是post
现在p = 10且q = 10
第三次电话 默认情况下,x = 10,y = 10 返回++ x和x = 11,所以q = 11,现在因为它被ref x = 11调用所以p = 11和