c语言,计算1到9和,为什么结果是46

#include<stdio.h>
int sum(int a,int b)
{
int i,sum;
for(i=a;i<b;i++)
sum=sum+i;
return(sum);
}
int main()
{
int z;
int sum(int a,int b);
z=sum(1,10);
printf("%d",z);
}
为什么结果是46,不是45

因为你没有对sum变量进行初始化,这样sum的默认值是所指向地址所存储的值,这个数值是随机的,得到的结果可能会出现偏差。修改代码如下:

#include<stdio.h>
int sum(int a,int b) {
int i,sum=0;  //对sum变量初始化为0
for(i=a; i<b; i++)
sum=sum+i;
return(sum);
}
int main() {
int z;
int sum(int a,int b);
z=sum(1,10);
printf("%d",z);
}

执行的结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-07

这是你程序的截图,int i,sum;改为int i,sum=0;

即对sum赋初值0

第2个回答  2017-04-07
因为在子程序中你的变量sum没有赋初值,应该在循环前加上sum=0;本回答被提问者采纳
相似回答