求分析步骤,计算步骤弄不明白了


int a=2;
#include<stdio.h>
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",s);
}

求分析步骤,属实算不明白为什么结果是29了

难点其实就在于有4个变量都叫a
我给你把代码改改,你再看,就清楚了

#include<stdio.h>
int f(int n)
{
static int a=3;
int t=0;
if(n%2) {static int b=4; t+=b++;}
else {static int c=5; t+=c++;}
return t+a++; 
}
 main()
{ int s=2,i;
   for(i=0;i<3;i++)
   s+=f(i);  
  printf("%d",s);
}

虽然变量同名,但是作用域不一样,所以其实不是一个变量。
你先把同名变量全部重命名,再算,就清晰很多。
否则很容易把自己绕晕。