| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1193 人关注过本帖
标题:数据丢失的问题
只看楼主 加入收藏
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
结帖率:100%
收藏
 问题点数:0 回复次数:13 
数据丢失的问题
C程序代码如下:
#include<stdio.h>
void main()
{
    float i=1;
            
    printf("%d\n",i);
}
i为实型变量,初值为1,按十进制格式输出,结果为0。我知道这样一条经验,但是其中具体的道理,我不是太明白,期待先知者道出原由。
搜索更多相关主题的帖子: 数据丢失 
2008-12-09 19:32
xian1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:42
专家分:10
注 册:2008-12-5
收藏
得分:0 
好像i等于任何值,按整型输出都是0,等待人解答...
2008-12-09 19:41
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
收藏
得分:0 
我只是随便给i赋了个值,另外,如果i为整型,那么按浮点型格式输出,结果也为0(假设i=3.141593),……

你想有所作为,而你又不比别人聪明,也不比别人勤奋,如果你能成功,猪都能上树!
2008-12-09 19:51
peng_piao
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-11-5
收藏
得分:0 
因为浮点型的数的保存方式和整型不一样
2008-12-09 20:52
peng_piao
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-11-5
收藏
得分:0 
float a=12780567;
  

  printf("%d",a);


差不多和这个数一样大的时候,或者大很多的时候,输出的话就会变化了,那是因为按整型数的字节长度去取内容的时候不再是0了
2008-12-09 20:55
peng_piao
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-11-5
收藏
得分:0 
float a=12780567;
  

  printf("%d",a);


差不多和这个数一样大的时候,或者大很多的时候,输出的话就会变化了,那是因为按整型数的字节长度去取内容的时候不再是0了
2008-12-09 20:55
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
收藏
得分:0 
在VC中,int型和float型同样占用4个字节的内存空间,但是二者保存数据的方式肯定是不一样的,float型涉及到小数部分的存放。但是看了楼上的解释我还是那种似懂非懂其实不懂的感觉。问题的重点不是最后输出的结果为什么是0,而是为什么会发生这样的变化。

你想有所作为,而你又不比别人聪明,也不比别人勤奋,如果你能成功,猪都能上树!
2008-12-12 10:53
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:0 
教材上有句名言,说C语言没有输入输出语句,输入输出操作都是使用库函数来完成的,LZ您还记得吧?

那么意思就是说,库函数的实现不是C语言本身的组成部分,从而对于常用库函数只有接口标准(也就是标准的函数原型),但是没有标准用来说明库函数如何实现的。于是库函数事实上对于不正常的使用方式,它有权作出任何匪夷所思的反应。
也就是说你使用库函数的时候应该用正确的方式去使用,像这样用%d来输出浮点数的行为,您自己也知道是不正确的,那么printf在这中情况下有权决定输出任何内容都不算违规。用美国方式说,在这种情况下printf甚至有权把咖啡倒在您的裤子上。

我说明白了么?
收到的鲜花
  • 广陵绝唱2008-12-12 12:16 送鲜花  49朵   附言:很详细透彻。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-12-12 11:14
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
收藏
得分:0 
谢谢,原来如此

你想有所作为,而你又不比别人聪明,也不比别人勤奋,如果你能成功,猪都能上树!
2008-12-12 11:53
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
应该顶上去,让不明白的朋友也看一下。
2008-12-12 12:17
快速回复:数据丢失的问题
数据加载中...
 
   



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

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