结果为:
sum=8
sum=10
sum=12
解析:因为sum()函数中,b是静态变量(static),静态变量的初始化只执行一次,也就是static b=3在整个代码中只会执行一次,b的值会继承上一次sum函数的执行结果。详细执行流程如下:
sum的参数为全局变量a
i=0时,调用sum(2),a=2,b=3
c+=1=1;
b+=2;b = 3+2 = 5
返回(a+b+c)=(2+5+1)=8
main函数显示sum=8
i=1时,调用sum(2),a=2,b=5,因为b时静态变量,保留上一次sum计算的值,所以是5
c+=1=1;
b+=2; b = 5+2 = 7
返回(a+b+c)=(2+7+1)=10
main函数显示sum=10
i=2时,调用sum(2),a=2,b=7,因为b时静态变量,保留上一次sum计算的值,所以是7
c+=1=1;
b+=2; b = 7+2 = 9
返回(a+b+c)=(2+9+1)=12
main函数显示sum=12
结果:30
static 修饰的变量会保留上一次的结果值。
所以需要注意的就是变量b的值,每次会保留上一次的结果。
第一次执行sum(a)后,b的结果为5;
第二次执行sum(a)后,b的结果为5+2=7;
第三次执行sum(a)后,b的结果为7+2=9;