当前位置: 代码迷 >> C语言 >> 结果为什么显示为0?
  详细解决方案

结果为什么显示为0?

热度:116   发布时间:2006-01-21 11:32:00.0
结果为什么显示为0?
main ()
{
float f;
int i=10;
f=i/2.0;
printf("%d\n",f) ;
getch();
}
结果为什么显示为0?
搜索更多相关的解决方案: 结果  

----------------解决方案--------------------------------------------------------
d换成f就可以得到正确的结果.但为什么会事零,我就不知道啦!
----------------解决方案--------------------------------------------------------
我刚才试一下这样也是0.
main ()
{
float f=1.0213;
printf("%d\n",f) ;
getch();
}

而这样就是1.021300啦
main ()
{
float f=1.0213;
printf("%f\n",f) ;
getch();
}
哪位懂的请指教一下!
----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
也就是说printf函数指向了第一个变量的首地址,然后根据%后的参数按字节读取,所以默认了%后的参数所指向的类型与后面变量的类型是一致的。
----------------解决方案--------------------------------------------------------
4楼的那个
f=i/2.0可以改成f=(float)i/2
改不改都是一样的啊.

5楼的分析的很有道理啊呵呵顶了啊
----------------解决方案--------------------------------------------------------
以下是引用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?


----------------解决方案--------------------------------------------------------

  相关解决方案