关键在于n,第一个程序里n是临时变量,每次调用fun()都是0,第二个程序n是静态变量,会保存修改的值,三次调用后n变为3 ,所以最终计算结果不同
static局部变量只被初始化一次,第二个程序的static int n=0;只在for循环第一次执行,以后都不会执行
问题在于第一个static n每一次都在后面重新定义了m=n=0,而第二个static =0属于静态定义,也就是n的值改变后重新回到f()时,n不是为0,而是为n目前的数值。