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

时间:2017-02-18 06:15:44

标签: c++ increment decrement postfix-operator prefix-operator

#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

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

1 个答案:

答案 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和