能解释一下这个程序怎么运行出结果的吗?

 

如果是在函数内定义的局部变量,当这个函数走完之后会直接释放,所以无论走多少遍f(int a),b都会b=0,b++,也就是b等于1

但是静态局部不会随着函数走完释放,并且静态局部变量只能被初始化一次。因此第一遍走f(int a)时c为5,第二次再走的时候就直接执行c=c+2,也就是c变成了7

static int c声明C是静态变量,初始化只执行一次,C可以看成一个全局变量,第一次执行的时候赋值,C=3,执行一次f()函数后C=5, a+b+c的值就是2+1+5=8,下一次进入f()函数后,static int c= 3不会在执行,C=C+2=5+2=7, a+b+c=2+1+7=10,下一次执行的时候C=7,C=C+2=7+2=9,a+b+c=2+1+9=12