首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

下面这段简单的c源码为什么改变一个语句,两次运行结果不一样?解决方法

2012-03-14 
下面这段简单的c源码为什么改变一个语句,两次运行结果不一样?正确源码如下#includestdio.h/*打印摄氏温

下面这段简单的c源码为什么改变一个语句,两次运行结果不一样?
正确源码如下
#include<stdio.h>
/*打印摄氏温度-华氏温度对应表*/

main()
{
float fahr,celsius;
float upper,lower,step;
printf("celsius to fahr\n");
lower = -17.8;
upper = 148.89;
step = 11.11;

celsius = lower;
while(celsius <= upper)
{
fahr = 9 * celsius / 5 + 32;
printf("%6.2f\t%3.0f\n",celsius,fahr);
celsius = celsius + step;
}
}
如果把fahr = 9 * celsius / 5 + 32;改为fahr = 9 / 5 * celsius +32;
结果为什么不一样,变量都是声明的float。

[解决办法]
会先计算9 / 5,这两个数都是整数
写成9.0 / 5
[解决办法]
因为9/5等于0

fahr = 9.0f * celsius / 5.0f + 32.0f;
fahr = 9.0f / 5.0f * celsius +32.0f;

别忘了常量也有类型。

[解决办法]
隐式类型转换问题
[解决办法]
类型转换
[解决办法]
fahr = (float)9 * celsius / 5 + 32;
fahr = (float)9 / 5 * celsius +32;
ok!!!!
[解决办法]
整数除法,结果是整数
[解决办法]
double就行了。9换成9.0或者5换成5.0
[解决办法]
学习了。。常量也有类型。。

热点排行