游戏王 碎断剑:这程序运行结果应该是什么?

来源:百度文库 编辑:高校问答 时间:2024/05/10 09:17:59
int fun(int x[],int n)
{
static int sun=0,i;
for(i=0;i<n;i++)sum+=x[i];
return sum;
}

main()
{ int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf("%d\n",s);

getch();
}

1+2+3+4+5 +15+6+7+8+9
结果是60;
原因是静态变量只初始化一回.第二个函数调用时那个sum已经是15了..所以比你想象的多15...
不应该定义为静态的...
把那个static去掉.int sun=0,i; 和这个地方的sun改为sum就可以...
结果就是45...

s=1+2+3+4+6+7+8