c语言 求此题的 详细 解答

来源:百度知道 编辑:UC知道 时间:2024/05/02 11:30:27
fun(int x,int y)

{ static int m=0,i=2;

i+=m+1; m=i+x+y;return m;}

main()

{ int j=1,m=1,k;

k=fun(j,m); printf("%d,",k);

k=fun(j,m); printf("%d\n",k);

}

k=fun(j,m)=fun(1,1)
i+=m+1 i=i+(0+1)=2+1=3
m=i+x+y m=3+1+1=5 //因为m和i是静态变量,所以下次调用fun()的时候 i=3,m=5
所以第一个k=5;

第2次
k=fun(j,m)=fun(1,1)//这个m和fun()里面的m不是同一个变量
i+=m+1 i=i+(m+1)=3+5+1=9
m=i+x+y=9+1+1=11
所以第二个k=11