这个代码输出结果为11 12,为什么。

img

对的,因为a是static型的,存活区间很长,而且只初始化一次。因此第二次进入该函数时a是11,而不是重新变成10

因为for循环的条件是 j<=2,所以for循环会调用两次fun方法

第一次调用

void fun()
{
  static int a = 10;//第一次初始化
  a++;//a = a+1 = 10+1 = 11
  printf("%d\n",a); //输出 11
}

第二次调用

void fun()
{
  static int a = 10;//因为有static,第一次调用已经赋值,所以是11
  a++;//a = a+1 = 11+1 = 12
  printf("%d\n",a); //输出 12
}