这个运行后第二次k为什么等于11呀?

#include <stdio.h>
int fun(int x,int y)
{
static int m=0,i=2;
i+=m+1;
m=i+x+y;
return m;
}
void main()
{
int j=1,m=1,k;
k=fun(j,m);
printf("%d\n",k);
k=fun(j,m);
printf("%d\n",k);
}

m和i是static变量,在函数运行后状态保存
第二次运行fun时m就不等于0,i不等于2了

因为i和m是静态变量,只初始化一次,再调用会保留上一次计算之后的值