免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1846 | 回复: 5
打印 上一主题 下一主题

输出问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-09 07:20 |只看该作者 |倒序浏览
#include <stdio.h>

int main (void)
{
        int temp;

        for (temp = 0;temp <= 500;temp = temp + 20)
        {
                printf ("%d\t%f\n",temp,(5.0 / 9.0) * (temp - 32));
        }
}

=============分割=============

#include <stdio.h>

int main (void)
{
        int temp1,temp2;

        for (temp1 = 0;temp1 <= 500;temp1 = temp1 + 20)
        {
                temp2 = (5.0 / 9.0) * (temp1 - 32);
                printf ("%d\t%f\n",temp1,temp2);
        }
}


下面那个为什么不行?

论坛徽章:
0
2 [报告]
发表于 2012-06-09 11:35 |只看该作者
回复 1# marsaber

格式转化问题      加个强制转化就没得问题了printf ("%d\t%f\n",temp1,(float)temp2);
printf函数不会进行任何类型转换,只是提取相应位数按照按照控制符输出相应的值。
float在内存中存储格式和整形是不一样的
   

论坛徽章:
0
3 [报告]
发表于 2012-06-09 11:56 |只看该作者
:wink::wink:

论坛徽章:
0
4 [报告]
发表于 2012-06-09 20:26 |只看该作者
回复 2# Moon_Bird

现在的输出是:
0       -17.000000
20      -6.000000
40      4.000000
60      15.000000
80      26.000000
100     37.000000
120     48.000000
140     60.000000
160     71.000000
180     82.000000
200     93.000000
220     104.000000
240     115.000000
260     126.000000
280     137.000000
300     148.000000
320     160.000000
340     171.000000
360     182.000000
380     193.000000
400     204.000000
420     215.000000
440     226.000000
460     237.000000
480     248.000000
500     260.000000

正常吗?
我的CentOS6.2 gcc-4.4.6

论坛徽章:
0
5 [报告]
发表于 2012-06-09 20:50 |只看该作者
计算temp2时已经被转换成int了。。。当然结果不会对

论坛徽章:
0
6 [报告]
发表于 2012-06-10 00:00 |只看该作者
回复 5# 201092244

谢谢,明白一些了。
非常感谢各位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP