| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2351 人关注过本帖
标题:简单程序、细微之处见实力
只看楼主 加入收藏
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
显然稍微有点想法的人遇到这种问题,第一个检查的就是printf函数了……而且修改也第一个就改它……这纯粹是习惯问题
2008-11-12 04:41
UVcaigeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-10-21
收藏
得分:0 
回复 6# 的帖子
其实你的m 也应该定义为float
 不然运算的结果强制为int 跟原来一样,结果还是错的
2008-11-13 16:08
dsr_dbh
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-10-29
收藏
得分:0 
2楼正解。。第二次格式两样不对。。
2008-11-13 17:19
langzi_feng
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-11-13
收藏
得分:0 
是不是说:定义的格式要和输出的格式一致呢??
还是有其他更深沉的意思????
2008-11-13 18:14
vostro1400
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-14
收藏
得分:0 
你的程序编写错误,怎么能运行出正确的结果
/*right source file.*/
#include<stdio.h>
main()
{
    int m;
    float sum=0;
    for(m=1;m<=20;m++)
       sum+=(m+1)/(float)m;
    printf("the sum is %f\n",sum);
}
2008-11-14 10:49
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
其实建议都改成float……
2008-11-14 11:24
hokers
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2008-11-9
收藏
得分:0 
.....
这道题float在内存中的存放方式换成int输出就成0拉.
2008-11-14 14:43
liqiangzk982
Rank: 2
等 级:论坛游民
帖 子:50
专家分:16
注 册:2006-12-20
收藏
得分:0 
浮点和整型存储是站的空间是不一样的 。float为4个字,int为2个字。
main()
{   int m;
    float n=0,sum=0;
    for(m=1;m<=20;m++)
    {
        n=(m+1)/m;   
     sum=sum+n;
    }
    printf("%d\n",sum);  // %d-> %f
}
sum为float型,为4个字如:1111 1100  0000 0000  0000 0000  0000 0000;
假如要用int型读取sum的值,(int型为2个字如:0000 0000;)那么在此类读取的过程中会有数据的丢失,如果丢失的部分为1111 1100  0000 0000,那么你读取的数值就会为0000 0000  0000 0000,转换成10进制的输出就只有0了。

呵呵,等待高手指点这种情况丢失的到底是低16位还是高16位的。。

菜鸟我最大!
2008-11-14 18:08
buaa_wangm
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-11-14
收藏
得分:0 
细节决定成败
2008-11-15 09:25
Estudy
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-31
收藏
得分:0 
标题党

用程序说话
2008-11-15 09:29
快速回复:简单程序、细微之处见实力
数据加载中...
 
   



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

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