C语言的一个算法
为什么在C语言中5.0/5.0=0呢????
参考答案:我猜你的程序是这样写的:
printf("%d",5.0/5.0);
所以打印出来的结果是0
其实并不是5.0/5.0=0;
因为5.0/5.0的结果是一个float型的实数,而程序中打印是用%d即int数据型,所以只是读取了原来数据存储空间的一部分,而这部分刚好是"0",所以输出的结果是"0"
如果你改为
printf("%d",(int)(5.0/5.0));把数据转为了整数型int就是输出1了
补充:
因为你定义了
int x,y;
所以x是整数
虽然你的程序是
x=1.2;
但1.2是小数,实际x是不超过这个数的最大的整数即x=1;
所以
y=(x+3.8)/5.0=(1+3.8)/5.0=4.8/5.0=0.96
但y也是整数型
所以y也取不超过这个数的最大整数,也就是0
你可以用下面的程序验证一下:
main()
{float f;
int x,y;
x=1.2;
f=(x+3.8)/5.0;
y=f;
printf("x=%d,y=%d,f=%f\n",x,y,f);
getch();
}