不知道程序怎么运算的。结果怎么出来的。。。
for里面是局部变量
int i=0;
i = Square(i);
for(;i<3;i++){
static int a= 1;
//局部变量作用范围就是for 里边,不影响外部,局部变量局部变量,把 i 的名换成 其他的能理解吧
a = a+=Square(a);
printf("%d",a);
}
printf("%d",i);//执行三次i++,为3 的原因
再加上前面的几位,我觉得他们说的很详细了
static 声明静态变量,在加载类的时候执行了一次仅此一次 ,就不再执行了。
static int i = 1;该语句只在进入循环的第一次时被执行,后面就不会再执行了。这就是static的语义。
static 静态的 只分配内存一次,初始化一次。
所以第一次:i+=1所以输出了2
第二次:static int i = 1;是没有作用的,i+=4,所以输出了6
第三次:同理,i+=36,输出了42
退出循环:输出了局部变量i的值3(注意,这里不是静态变量)
PS:相同的变量名,内层的变量会覆盖外层的变量
静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;从第二次开始实际代码就是这样了,而for循环中的i是局部变量不是由全局变量i决定的 for(li<3;i++){ i+=Square(i); printf()}
第一次进来static int i = 1,第二次循环不执行这句话,下次循环进来就保持上次循环结束时i的值,
static 使得i的值一直保留