读书人

关于printf()函数打印时格式控制符

发布时间: 2013-04-09 16:45:09 作者: rapoo

关于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 浮点数 就可以了。

读书人网 >C语言

热点推荐