c语言编程总是溢出

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:14:01
编了个程序,起初都使用int,后来运行时发现a=1,n>=7时会溢出,就改成了下面这样,结果运行时输完后还是溢出,哪位高手帮忙看一下,谢谢啦~~
#include <stdio.h>
void main()
{
float a,n,i,sum,k,l;
i=1;
printf("input a&n:");
scanf("%f%f",&a,&n);
sum=n*a;
while(i<=n-1)
{
l=exp(i);
k=(n-i)*l*a;
sum+=k;
i++;
}
printf("%1.0f",sum);
}

int exp(float x)
{
float y,z;
z=1;
for(y=1;y<=x;y++) z*=10;
return(z);
}
关键是我都改成float了啊
还有,后来我把exp()函数去掉后,main函数里l=exp(i);一句改成l=1;
for(y=1;y<=i;y++) l*=10;就行了,谁知道这是咋回事啊??

n=7 是
sum就是从60+500+4000+20000+100000;
int 只是-32768——32767 不溢出才怪呢
对于吧 L 改成 1 的情况
c函数调用好似值传递 你在exp里面改变了 L 对主函数的 L 没有任何影响和改变,
每次 L 都是 1
算出的sum也就没那么打,所以就不会溢出了

这数大了溢出不是很正常么

楼上的兄弟,我后来是把exp整个去掉了,没再用自己的函数,对应的main里改动后是添了两条语句。你可能是没注意后面那一句吧,还有,解释一下,程序是输出a+aa+aaa+aaaa...用的。n是项数。
是不是exp函数不能用float型的值啊?