第一个是把a和b给赋值成整形,第二个是赋值成单精度, 结果却是不同的,第一个48.84,第二个31.00,为什么会有这样的的差别呢?
——————————————————————————————————————————————(正确程序)#include<stdio.h>
main()
{
int i,d;
float c,a=2,b=1,sum=0;
for(i=1;i<=30;i++)
{
c=a/b;
d=b;
b=a;
a=a+d;
sum=sum+c;
}
printf("sum=%.2f\n",sum);
}
——————————————————————————————————————————————(错误程序)
#include<stdio.h>
main()
{
int i,a=2,b=1,d;
float c,sum=0;
for(i=1;i<=30;i++)
{
c=a/b;
d=b;
b=a;
a=a+d;
sum=sum+c;
}
printf("sum=%.2f\n",sum);
}
分析:
在两个程序中,第一个是把a和b给赋值成整形,第二个是赋值成单精度,
结果却是不同的,第一个48.84,第二个31.00,但是本题中对于ab来说运算都是在整数基础上,只有c=a/b中c可能是分数,我已经把c给定义
为float了,为什么会有这样的的差别呢?