这道题是怎么计算的

来源:百度知道 编辑:UC知道 时间:2024/07/01 11:03:06
int a=4;
int f(int n);
{int t=0;static a=5;
if(n%2) {int a=6; t+=a++;}
else {int a=7 ;t+=a++;}
return t+a++;
}
main()
{int s=a,i=0;
for(;i〈2;i++ 〉 s+=f(i);
printf (“%d\n”,s);
}
调用2次f函数的过程是什么样的
我做的也是28 但是答案是24

f(0)调用:n=0,a=5,t=0
n%2为0假
{int a=7;
t+=a++;//a=7,t+=7,所以t=7,然后a=8;
}
花括号外,a=5,跟花括号内的a不是同一个a所以值不同
return t+a++;//t+a为12,然后a=6;返回12

f(1)调用:
t=0,n=1,a=6因为是寄存器变量
n%2为1真
{int a=6;
t+=a++;//a=6,t+=6,所以t=6,然后a=7;
}
花括号外,a=6不变
return t+a++;//t+a为12,然后a变为7,返回12

最后输出28