答案是10
int s 是在函数f()中定义的,每次调用
f()是都会重新给方法里的 s 赋值 为1 不会随着外部调用次数改变,真正值发生改变的, 是i 由于i是静态变量,只在内存中存在一份,所以
for循环中循环,分别为
第一次 s=1 i=1 a=1
第二次 s=2 i=2 a=3
第三次 s=3 i=3 a=6
第四次 s=4 i=4 a=10
int f() 函数里的局部变量 i 是个静态局部变量,它的值是会被保留。
执行顺序如下:
i = 1: a+=f();===> f() ==> s+=i --> return s=1+0 = 1; i++ = 1; a+=f() = 0 + 1 = 1.
i = 2: a+=f();===> f() ==> s+=i --> return s=1+1 = 2; i++ =2; a+=f() = 1 + 2 = 3;
i = 3; a+=f();===> f() ==> s+=i --> return s=1+2 = 3; i++ =3; a+=f() = 3 + 3 = 6;
i = 4; a+=f();===> f() ==> s+=i --> return s=1+3 = 4; i++ =4; a+=f() = 6 + 4 = 10;
结束循环,输出:10
看看你的解题过程发现了错误的地方,你的s是累加项,但是程序中s每次要初始化为1
又碰到你,最近在刷题?
回归题目,