如何手动跟踪 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 和
#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 和