-4
#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

但是当我尝试用笔和纸解决它时,我被卡住了。请告诉我如何得出正确的输出,以保持我的概念清晰。

4

1 回答 1

0

p=10 q=13

第一次调用 p= 10 , q = 13 p 通过引用传递

返回将是 y - 因为它是后减量,所以它会返回 13

第二次通话

q = 13 通过 ref x = 13 y =10

return 将是 y——这是 =10 而不是 9,因为它是 post

现在 p = 10 和 q =10

第三次调用 x = 10 和 y =10 默认返回 ++x 和 x = 11 ,所以 q=11,现在因为它是由 ref x =11 调用所以 p=11 和

于 2017-02-18T06:29:27.050 回答