#include<stdio.h>
int a=4;
int f(int n)
{ int t=0;
static int 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);
}
我已经找到我错在哪了,前面都没有错,是第二次循环的时候,我又把4赋值给s了,而事实上,此时s已经被赋值为9(第一次循环结果),所以刚好差5,15是正解,你的回答很详细,是我大意了,多谢,可是只能采纳一个,不好意思
我想知道为什么,能详细解释下不?我算的是10啊
追答static 静态变量 只能用一次,就是初始值。
追问结果等于s=s+f(i),s=4是一定的对吧,所以结果=4+f(i),当i=0是s=4+5=9(因为static int a=5直接赋值给return t=a++)对吧,此时a=6,然后i=1,同理不用管if语句将a=6再赋值给return t=a++,f(i)=6,然后s=s+f(i)=4+6=10 ,那个5是从哪来的
追答4+5+6正好啊,那个s第二次是9
追问哦,当i=1时就不再执行int s=a,i=o这一行语句了,而是把刚才的s=9赋值给s,所以s=9+6=15.对吧,
追答嗯,是的。它就运行下面的了
本回答被提问者采纳