萌新求助
#include<stdio.h>int main(void)
{
int flag=1,i=1,n,x;
float sum=0,item;
scanf("%d",&n);
for (x=1;x<=n;x++){
item=flag*1.0/i; *
sum=sum+item;
i=i+2;
flag=-flag;
}
printf("the sum is %f",sum);
return 0;
}
请问为什么加粗的语句里的 flag*1.0/i 改成 flag*1/i 之后结果就错误了呢?... 本帖最后由 superbe 于 2019-9-17 16:37 编辑
这里面有个类型转换的问题,如果是flag*1.0/i,因为有1.0,就按double计算,结果也是double。如果是flag*1/i,就按int计算,结果也是int,小数被截断了。也就是不同类型数计算时隐式向较高类型转换。
例1.0/2=0.5,而1/2=0.
页:
[1]