int 和double在这程序里有什么区别。

刚刚开始学C
这是个计算a+aa+aaa+aaaa+......的程序,但是把其中的sn改成double或者float型,结果就只输出0
为什么啊!不是当运算中int和double型都有时,应该都换成double吗?
~~~ 好迷茫 大神求指导T.T

#include <stdio.h>
#include <math.h>
int main()
{
int n,i,k,a,f,sn=0;
printf("enter n and a:");
scanf("%d %d",&n,&a);
for(k=1;k<=n;k++)
{
for(i=1,f=1;i<=k;i++,f=f*10)
{
sn+=a*f;
}
}
printf("sn=%d\n",sn);
return 0;
}
我用的是VC6.0

int和double是计算机存的长度不同,int只能是整数,double可以是小数。你把sn改为double那么最后第二句也要改,printf("sn=%lf\n",sn);
那是格式化输出,int对应%d,float对应%f,double对应%ld
你的错误应该就是类型不匹配,你试试上面的改法吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-16
整数用int
非整数用double
double 和long int区别在于一个是以指数形式保存,可以保存小数,而long int只能保存整数,不能保存小数点。
注:整数的任何运算都是精确的(1+1就是2,永远不会是2.00000000000000001),但是浮点数运算会有精度问题
第2个回答  2012-01-22
典型的输出控制符没用对。 double型输出用%lf,float用%f,long用%ld,int用%d.千万别用错了
相似回答