int a=2;
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; //a=2,s=2;
for(i=0;i<3;i++)
s+=f(i);
printf("%d\n",s);
}
第一次循环i=0
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++;}//执行此处 a=5, t=5
//此时static int a=5;出 a=6
return t+a++; //此处a为static int a=3;
//return 5+3 a++,
//此时static int a=3;的a =4;
}
s=s+8,就是s=10
第二次循环 i=1
int f(int n)
{static int a=3;
int t=0;
if(n%2) //条件成立
{static int a=4;t+=a++;} //t=4;
else
(static int a=5;t+=a++;}
return t+a++; //此处a为上次的
//此时static int a=3;的a =4;
//return 4+4 ,a++
//此时static int a=3;的a =5;
}
s=s+8,即s=18
第三次循环i=2
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++;} //t=6; a 第一次循环时更改
return t+a++; //return 6+5
}
结果s=s+11,即s=18+11=29
。
全部