首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于printf()函数打印时,格式控制符的使用有关问题

2013-04-09 
关于printf()函数打印时,格式控制符的使用问题double value 36.0;printf (“%d”,value)为什么打印出来的

关于printf()函数打印时,格式控制符的使用问题

double value =36.0;
             printf (“%d”,value);

为什么打印出来的结果是 0 ?不应该是36 吗?按照打印出来的结果,浮点数在计算机里面的存储肯定和整数的存储方式不一样,那浮点数在计算机里面是怎样存储的?
int value = 36;
             printf ("%lf",value);

这个结果也是0.000000;


[解决办法]

#define  SHOW_BYTES(value)  \
{   \
    int i;  \
    for (i = 0; i < sizeof(value); ++i)\
    {\
printf("%x ", *(((unsigned char *)&value) + i));\
    }\
}

double value = 36.0;
    SHOW_BYTES(value);



输出:
0 0 0 0 0 0 42 40
%d的格式将会输出int类型数据的值,如果是4字节的话,将会输出低4字节0的整形数值
[解决办法]
引用:
引用:这个是因为浮点数在计算机内部的表示方法造成的。

《深入理解操作系统》里有说明,也可以看看这个:

http://www.pc6.com/softview/SoftView_51072.html
发错网址了吧?怎么是个下载vc++6.0 的网站啊?


是的。你百度搜下 ruanyifeng 浮点数  就可以了。

热点排行