对的,因为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
}