如何手动跟踪 C++ 程序?

How to trace a C++ program by hand?

#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

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

p=10 q=13

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

returned 将是 y-- 因为它是 post 递减它将 return 13

第二次通话

q = 13 裁判通过 x = 13 y = 10

return 将是 y-- =10 而不是 9 因为它是 post

现在 p = 10 且 q =10

第三次通话 默认情况下 x = 10 和 y =10 return ++x 和 x = 11,所以 q=11,现在因为它被 ref x =11 调用所以 p=11 和