这个输出是什么,给解释一下为什么?

#include<stdio.h>
void fun(int k){
static int a;
printf("%2d",a);
a+=k;
}
int main(){
int k;
for(k=1;k<=3;k++){
fun(k);
}
return 0;
}

static为静态变量,系统默认初始值是0
而且不会随着函数的调用完毕销毁
因此输出为
0 1 3

代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

我认为学习这个的方式是你要表达你的观点,让其他人给你指出错误,并解决,给不是问这个怎么答,这个结果是什么
你应该吧你认为的答案写出来,或者你去亲身实验,抄,然后编译,看结果,在分析为什么,