int a=4;
int f(int n)
{ static int a=3;
int t=0;
if(n%2) {static int a=4; t+=a++;}
else {static int a=5;t+=a++;}
return t+a++
}
main ()
{ int s=a,i;
for(i=0;i<3;i++)
s+=f(i);
printf("d%\n',s);
}
在每次的运算过程中的a是怎样变化的??
谢谢
其他a就没有作用?
追答是的。
那可以吧具体的运算步骤大概写下?你的意思我懂,就是作用域和他们的生命期。但我不知道怎么算出结果出来,为什么就是29了?
追答我郁闷了,算了几遍都比29大!静态变量二次定义,应该不执行,直接跳过的。你在看看参考书吧,我再琢磨琢磨。
追问今天我算出来了,s=a=2,在if循环中,a的值是变化的,但是,由于int n=0,
所以f(0)=(t+a++)+(a++)=5+3=8,f(1))=(t+a++)+(a++)=4+4=8;f(2))=(t+a++)+(a++)=6+5=11
由于s=2,
所以s=s+f(0)+f(1)+f(2)=2+8+8+11=29;应该就是这样的吧,个人认为