static int i 是静态局部变量,在for循环体内优先使用这个变量(表达式优先使用距离最近的变量)
静态变量的初始化只执行一次,也就是说,第一次for循环时,执行 static int i = 1;后面的2次for循环就不再执行这句话了。所以结果就是:
第一次for循环:i += square(1) =1+1= 2; //这是静态变量
第二次for循环:i += += square(2) =2+4= 6; //这是静态变量
第二次for循环:i += += square(2) =6+36= 42; //这是静态变量
结束for循环后,最后显示的i是for循环外面定义的变量i,它的值是3
所以结果就是2,6,42,3
static局部变量只被初始化一次,下一次依据上一次结果值
不是2,3 吗?
static
修饰的变量在修改后会一直保存着修改后的值:【C语言】关于static关键字修饰的变量_Miss_Monster的博客-CSDN博客_c语言static修饰变量