| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2109 人关注过本帖
标题:指点迷津
只看楼主 加入收藏
happyxulingli
Rank: 1
来 自:湖北长大电信
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-11-25
收藏
 问题点数:0 回复次数:14 
指点迷津
/*for 循环*/
#include <stdio.h>
int main(void)
{
int value;  /*函数声明*/
for(value=36;value>0;value/=2)
printf("%3d",value);
return 0;
}
这是在value为int类型的时候,可以正常输出,
如果把value的int类型改为float类型,会出现什么情况?
搜索更多相关主题的帖子: 声明 include return 
2008-03-02 21:46
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
应该除不尽啊.....

学习需要安静。。海盗要重新来过。。
2008-03-02 21:48
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
你的程序会像陷入死循环一样一直跑到value的值小于float能表示的最小整数。

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-03-02 22:00
happyxulingli
Rank: 1
来 自:湖北长大电信
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-11-25
收藏
得分:0 
回复 2# 的帖子
为什么会有这种情况
能不能解释其中的原由啊?
2008-03-02 22:05
默默无纹
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-2-12
收藏
得分:0 
如果把value的int类型改为float类型,输出格式应该是(%3f)
value>0也应该变一下,比如value>1,因为它永远大于0.

从来怨天尤人每每自封为神
常怜众生如蚁不意身本凡尘
2008-03-02 22:10
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
// 有可能无限循环下去

—>〉Sun〈<—
2008-03-02 22:56
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
去查有关浮点数比较方面的资料

—>〉Sun〈<—
2008-03-02 22:58
zmy20062010
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-2-22
收藏
得分:0 
个人认为,改为float后不会陷入死循环。
c语言中浮点数的比较是有规则的,机器又能识别的最小数,当数据精度小于这个的时候,
c语言编译器会产生误差,导致显示数与实际数有差距。
  在上面的程序中,改为float后,当value的值变得很小很小(比如小于1e-6)时,会超出
机器能辨认的精度,编译器会产生误差,把该数作为零处理,程序运行终止。
  为此在程序运行是我们常常用1e-6作为零的界定,常用语句fabs(value)<1e-6来表示零。
收到的鲜花
  • sunkaidong2008-03-03 10:08 送鲜花  4朵  
2008-03-03 08:54
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
[bo]以下是引用 [un]zmy20062010[/un] 在 2008-3-3 08:54 的发言:[/bo]

个人认为,改为float后不会陷入死循环。
c语言中浮点数的比较是有规则的,机器又能识别的最小数,当数据精度小于这个的时候,
c语言编译器会产生误差,导致显示数与实际数有差距。
  在上面的程序中,改为float后,当value的值变得 ...


不会溢出么???

我猜测会溢出后死循环...呵呵

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2008-03-03 09:46
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
不好意思.没仔细看题,确实像8#说得那样.....不过程序对我们就没意思了,不知道循环的准确步数...

学习需要安静。。海盗要重新来过。。
2008-03-03 10:08
快速回复:指点迷津
数据加载中...
 
   



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

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