第1个回答 2013-01-07
int a=2;
int f(int n); // n为参数,三次调用函数n分别等于0,1 ,2
{
static int a=3;
int t=0;
if(n%2) //当n除以2余数不等于0时,也就是当n=1时执行
{static int a=4;t+=a++; //执行完这句之后t=t+a=0+4=4,a=5 }
else //当n=0和2时执行
{
static int a=5;
t+=a++; //相当于t=t+a++;先执行t=t+a,a再自增,即第一次调用函数,执行完这句后t=0+5,a=5+1=6;当n=2时执行完这句之后,t=0+6=6,a=7
}
return t+a++; //先返回t+a后,a再自增1,三次调用返回的数分别为 5+3=8&&a=4,4+4=8&&a=5,6+5=11&&a=6
}
main()
{
int s=a,i; //s=2
for(i=0;i<3;i++)
s+=f(i); //s=s+f(i),调用函数f(i),i作为参数传递,三次调用 i 分别等于 0,1,2;s分别等于2+8=10,10+8=18,18+11=29
printf("%d\n",s);
}
哪里不懂可以继续问本回答被提问者采纳