| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 548 人关注过本帖
标题:结果为什么显示为0?
只看楼主 加入收藏
sscc
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-1-13
收藏
 问题点数:0 回复次数:7 
结果为什么显示为0?
main ()
{
float f;
int i=10;
f=i/2.0;
printf("%d\n",f) ;
getch();
}
结果为什么显示为0?
搜索更多相关主题的帖子: 结果 
2006-01-21 11:32
longermai
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-21
收藏
得分:0 
d换成f就可以得到正确的结果.但为什么会事零,我就不知道啦!
2006-01-21 12:13
longermai
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-21
收藏
得分:0 
我刚才试一下这样也是0.
main ()
{
float f=1.0213;
printf("%d\n",f) ;
getch();
}

而这样就是1.021300啦
main ()
{
float f=1.0213;
printf("%f\n",f) ;
getch();
}
哪位懂的请指教一下!
2006-01-21 12:16
kankanba
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-10-24
收藏
得分:0 

%d对应的是int型,%f对应的是float型。
f=i/2.0可以改成f=(float)i/2

2006-01-21 12:44
bestee
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2006-1-19
收藏
得分:0 

先明确,float在处理的时候会被转成double,也就是8字节我们来看这一句:
printf("%d\n",f);
这句话首先是f被保存在内存中,占8字节。然后通过%d给printf输出,但是%d是int型,也就是2字节,所以printf打印出的是f的前两个字节的int形式也就是0。


欢迎光临我的blog! http://blog./bestee
2006-01-21 13:57
bestee
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2006-1-19
收藏
得分:0 
也就是说printf函数指向了第一个变量的首地址,然后根据%后的参数按字节读取,所以默认了%后的参数所指向的类型与后面变量的类型是一致的。

欢迎光临我的blog! http://blog./bestee
2006-01-21 14:02
zushuboderen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-12-24
收藏
得分:0 
4楼的那个
f=i/2.0可以改成f=(float)i/2
改不改都是一样的啊.

5楼的分析的很有道理啊呵呵顶了啊

冷静点............. 耐心点.............
2006-01-21 18:46
love_me
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2005-12-29
收藏
得分:0 
以下是引用sscc在2006-1-21 11:32:00的发言:
main ()
{
float f;
int i=10;
f=i/2.0;
printf("%d\n",f) ;//printf("%d\n",(int)f) ;
getch();
}
结果为什么显示为0?


灌水无罪! 顶贴有理! <0_0>
2006-01-21 18:58
快速回复:结果为什么显示为0?
数据加载中...
 
   



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

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