大侠们,这是什么问题??

davecom 2006-03-12 07:15:02
有这么一段代码:
main()
{
float F,c;

printf("Enter a 'F' to change:\n");

scanf("%f",&F);


c=5/9*(F-32);

printf("the result is %.2f\n",c);

getch();
}
结果总是显示0.00;请问这是为什么?
小弟初学,多多执教!
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumingchenchao 2006-03-14
  • 打赏
  • 举报
回复
多看书。。。。。。
Acoolice 2006-03-14
  • 打赏
  • 举报
回复
支持一楼的
baggio1984 2006-03-13
  • 打赏
  • 举报
回复
5/9是0啊
willingbupt 2006-03-13
  • 打赏
  • 举报
回复
按照高精度进行运算.改为5.0/9or5./9 .up
ykzhujiang 2006-03-13
  • 打赏
  • 举报
回复
字面常量会按照默认的类型来进行处理,比如你代码中的5和9都会被处理为整形,所以5/9直接就得0了,可以像楼上一样写成5.0/9,或者干脆直接写5./9等等也可以的
这样编译器就会进行类型转换,即当一个整数与一个浮点数运算的时候会自动将整数扩展成浮点数,这样就不会计算出结果零了。
当然这个结果还取决于这个表达式的运算顺序
由于编译器会从左到右进行计算,所以5/9先被计算了,所以后面即使在乘以一个浮点数也无济于事了
Dugowe 2006-03-12
  • 打赏
  • 举报
回复
对啊
你这样写:c = 5/9*(F-32); 编译器会把它当成 int/int 来处理
必须写 5.0
逸学堂 2006-03-12
  • 打赏
  • 举报
回复
c=5/9*(F-32); // 如果是浮点类型要这样使用c=5.0/9*(F-32)
llf_hust 2006-03-12
  • 打赏
  • 举报
回复
#include "iostream.h"
#include "stdio.h"
#include "string.h"
main()
{
float F,c;

printf("Enter a 'F' to change:\n");

scanf("%f",&F);


c=5.0/9*(F-32);

printf("the result is %.2f\n",c);

//getch();
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧