函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为( )。
int f(int m)
{ static int i=0;
int s=0;
for(;i<=m;i++)
s+=i;
return s;
}
为什么是15?
函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为( )。
int f(int m)
{ static int i=0;
int s=0;
for(;i<=m;i++)
s+=i;
return s;
}
为什么是15?
i是静态变量,当函数结束时,这个变量还一直存在,再次调用f函数时,这个i变量不会重新初始化,还是上次函数运行结束时的值
f函数功能是求1到m的累加和
f(5)=15,没问题。但函数调用结束后,i值为m+1,即i值为6。导致f(3)时,for循环条件无法满足,实际f(3)=0,因此最终两者相加结果为15