以下是引用narutosusdo在2011-6-9 19:42:15的发言:
恩,谢谢了,我想学懂,这个5.0和5会产生什么区别,为什么会产生这样的区别?希望你可以回答
5.0/9会以符点数方式来整除,结果会是0。5555。5/9代表整数整除结果会是0,具体还是看例子比较清楚:
#include<stdio.h>
int main()
{
printf("请输入一个华氏温度\n");
float a,c,b,d;
scanf("%f",&a);
c=5/9*(a-32);
printf("摄氏温度为%4.2f\n",c);
printf("表达式5/9*(a-32);运算会按下面的方式进行");
b=a-32;
printf("a-32的结果为:%f\n",b)/*输入41,这里会得到9.0000000*/
d=5/9;
printf("5/9的结果为:%f\n",d);;/*这里会得到0.000000*/
printf("%f",d*a);/*表达式5.0/9*(a-32)的最后结果为d*a即0.0000000乘9.0000000最后结果还是0.0000..,这就是为什么你的结果总是0的原因*/
}
注意看整个表达式是怎么样被程序解析的,先计算什么,后计算什么。因为() 圆括号有最高级别,所以先计算(a-32);然后+-*/运算符有左结合性。所以计算5/9,再乘(a-32)的结果
然后你再换成5.0/9看看结果又是什么,其实可以做个最简单的测试:
printf("%d",41-32);这个正常就是9。但是如果你改为printf("%d",41.0-32);结果就是0