题目来自“C语言深度解剖”:
对static int j;
void fun1()
{
static int i=0;
i++;
}
void fun2()
{
j=0;
j++;
}
void main()
{
int k=0;
for(k=0;k<10;k++)
{
fun1();
fun2();
}
}问i,j的值。
对这个题目有疑惑,一开始认为i=1;j=1;但验证却发现结果i不是为1,而是为10.这是因为
void fun1()
{
static int i=0;
i++;
}
static int i=0;就是对i进行定义及初始化,第二次执行该函数时,就跳过该语句了。
与
void fun1()
{
static int i;
i=0;
i++;
}与这个函数是有区别,二者不能等价。