| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 421 人关注过本帖
标题:还是不懂啊.......求解释
只看楼主 加入收藏
zh77
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:84
专家分:22
注 册:2011-8-5
结帖率:100%
收藏
已结贴  问题点数:4 回复次数:8 
还是不懂啊.......求解释

# include <stdio.h>

int main(void)
{
    int a = 97;
    float b;
    b = a;

    printf("%d\n", a);
    printf("%c\n", a);
    printf("%f\n", a);//这个为什么输出的是0.000000而不是97.000000啊?
    printf("%f\n", b);//这个怎么就是97.000000了????

    return 0;
}
2011-09-11 15:33
zh77
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:84
专家分:22
注 册:2011-8-5
收藏
得分:0 
......不懂
2011-09-11 15:34
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
printf("%f\n", a);//int和float一样吗?改为printf("%f",(float)a);
 printf("%f\n", b);//b是float型,输出也是float型,正确
2011-09-11 15:38
iwonply
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2011-8-24
收藏
得分:0 
三楼说的好,顶!
2011-09-11 15:47
zh77
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:84
专家分:22
注 册:2011-8-5
收藏
得分:0 
回复 3楼 hjywyj
不一样怎么就输出0.000000了呢?97跟这个 没什么关系啊
2011-09-11 15:53
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 5楼 zh77
类型不符,发生未知错误,《记住未知错误》至于答案是你输出那样,和你的机子或编译器有关吧!

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-11 16:31
LennyMogwai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:15
注 册:2011-7-24
收藏
得分:0 
据我猜测……貌似是这样的……
假设你的编译器int类型是16位,那么float类型就是32位的,你用%f格式输出int型的变量a,实际上是把0000 0000 0110 0001(a的存储格式)扩展成了0000 0000 0000 0000 0000 0000 0110 0001(float型的存储格式),那么,按照float的表示方法(多少位表示指数,多少位表示小数),输出是个很小的数,近似于0,所以就输出0.000000了……

我手头没资料,不太记得float怎么表示了,感觉3楼说的有道理,在此提出自己的看法……

期待下楼正解……
2011-09-11 16:35
LennyMogwai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:15
注 册:2011-7-24
收藏
得分:0 
一般来说,float类型32位,31位表示符号位,30位表示指数符号位,29~23位表示指数位,22~0位表示小数位,0000 0000 0110 0001扩展成32位之后,基本近似于0了……所以输出0.000000

参考:http://wenku.baidu.com/view/7103f9da50e2524de5187e18.html
2011-09-11 16:41
LennyMogwai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:15
注 册:2011-7-24
收藏
得分:4 
…………刚测试了一下,虽然编译通过,但是楼主确定有输出?……

2011-09-11 18:28
快速回复:还是不懂啊.......求解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021954 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved