| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 589 人关注过本帖
标题:共用体的输出值的问题
只看楼主 加入收藏
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
共用体的输出值的问题
#include<stdio.h>
union student
{
    char i;
    int j;
    float k;
}stu;
main()
{
    stu.i='a';
    printf("%c\n",stu.i);
    printf("%d\n",stu.j);
    printf("%f\n",stu.k);
}
输出是
a
97
0.000000
为什么最后一个是0?  浮点数在内存中是怎样占用内存?  麻烦大侠们指导一下!!!  谢谢了!!!
搜索更多相关主题的帖子: 内存 
2011-01-11 14:49
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:7 
浮点数据就是按下表的格式存储在4个字节中:

Address+0 Address+1 Address+2 Address+3 Contents

SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
      S: 表示浮点数正负,1为负数,0为正数

      E: 指数加上127后的值的二进制数

      M: 24-bit的底数(只存储23-bit)

2011-01-11 15:16
观弈寒儒
Rank: 7Rank: 7Rank: 7
来 自:自 来
等 级:黑侠
帖 子:359
专家分:545
注 册:2011-1-9
收藏
得分:7 
回复 楼主 li_danwang
简单地说,char和int可以互通,char和float却不行,所以得不到你想要的结果。
呵呵,希望对你有帮助。

事件记录,值得关注! http://bbs.bccn.net/z_court.php?fid=5
2011-01-11 15:30
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:7 
float用占4个字节,当你数值小的时候就前有几面几个是用来表示数字的
比如:  1    它在内存中的存储方式差不多是 0 0001 000 0000 0000 0000 0000 0000 0000(我只是举个例子,其实1肯定不是这样存储的)
当你存储的数很小时,它后面的字节数存储都是0
而char int 型的数都只有1 个字节或2个字节,存储的时候是从后面的字节数开始存储,这样存储下来的数用float方式读取的话,前面都是0,就后面有些数,但float
表示的小数有限所以输出的只能都是0.0000000
大约是这个道理,我只是很模糊的说下,我也不是很懂,但应该是类似这样的道理

勤能补拙,熟能生巧!
2011-01-12 00:16
快速回复:共用体的输出值的问题
数据加载中...
 
   



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

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