分析代码
#include <stdio.h>
void fun(int i)
{
static int value = i++;
printf("%d\n",value);
}
int main()
{
fun(0);
fun(1);
fun(2);
fun(100);
return 0;
}
程序输出为:
0
0
0
0
是因为value是静态类型,只会定义一次。也就是说,不管调用fun()这个函数多少次,static int value = i++这个定义语句只会在第一次调用的时候执行,由于第一次执行的时候i = 0,所以,value也就被初始化成0了。以后调用fun()函数都不会在执行这条语句。