免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1623 | 回复: 5

输出问题。 [复制链接]

论坛徽章:
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
发表于 2012-06-09 11:35 |显示全部楼层
回复 1# marsaber

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

论坛徽章:
0
发表于 2012-06-09 11:56 |显示全部楼层
:wink::wink:

论坛徽章:
0
发表于 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
发表于 2012-06-09 20:50 |显示全部楼层
计算temp2时已经被转换成int了。。。当然结果不会对

论坛徽章:
0
发表于 2012-06-10 00:00 |显示全部楼层
回复 5# 201092244

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

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP