int x=4;
void incre()
{
static int x=1;
x*=x+1;
printf(“%d”,x);
}
int _tmain(int argc,_TCHAR* argv[])
{
int I;
for(i=1;i<x;i++){
incre();
}
return 0;
}
解析:
static初始化一次,使得函数结束时局部变量x不被释放,下一次使用函数时x使用上次的值
此外局部变量会覆盖全局变量
int x=4 不变,for循环执行3次,调用3次incre()方法,在incre()方法里面的x变量的值一直在变。
每次调用incre()就执行一次 x=x*(x+1);
第一次:x=1*(1+1)=2
第二次:x=2*(2+1)=6
第三次:x=6*(6+1)=42