C语言中多次调用函数时静态局部变量只赋值一次

物理原理是什么?
例如这个函数中

main()
{
int i;
void f();
for (i=1;i<=5;i++)
f();
}
void f()
{
static int j=0;
++j;
printf("%d\n",j);
}
当再次调用函数f()时为什么有这句 static int j=0; 为什么就没有赋值了 物理原理是什么?

当编译器处理该代码时,遇到静态变量的初始化,就会在函数f外单独生成一条命令,给j赋值为0. 这些命令甚至会在main函数调用以前就执行。而在函数中,第一条语句实际上不是j=0,而是++j。

这样,使得静态局部变量只初始化一次。
温馨提示:答案为网友推荐,仅供参考