在这个程序中主要看哪个static这是静态的意思 也就是说 当fun()函数运算完也不释放x的值 直到mian()函数执行完才释放x的值,这个程序的运行顺序就是,先进入到mian()函数,做循环,s=s+fun()到这句的时候会去调用fun()函数 这是返回x=x+1=2 s=1+2 这时s=3 for循环中i的值自增后
i=2 这时s=3还是满足条件,这样一直循环下去,这个程序感觉不对,这样就死循环了,因为fun()函数中的x值一直没有被释放 第二次执行的时候就变为x=2+1=3了。。这样 主要就是static的作用
static int x =1; //这句说明了x是个 静态变量,每次调用函数修改的时候,会影响下次访问时的值。所以有:
第一次调用fun()函数的时候,x = 1+1 =2;
第二次调用fun()函数的时候,x = 2+1 =3;
第三次调用fun()函数的时候,x = 3+1 =4;
.....
因此,main()中for循环
i=1时, s = 1+fun() = 1 + 2 =3;
i=2时, s = 3+fun() = 3 + 3 = 6;
i=3时, s = 6+fun() = 6 + 4 = 10;
........
由于 在循环中,i 是自加1 的,而s 也是增长的,而且增长的速度比 i 增长的快,所以始终有i<=s;
因此,这个程序会陷入死循环中~~根本就执行部了printf("%d\n",s);这条语句,因为程序一直在执行上面的循环语句....
只执行一次 随后输出3