读书人

有关单精度浮点数在计算机内部的存放格

发布时间: 2012-04-10 21:03:56 作者: rapoo

有关单精度浮点数在计算机内部的存放格式编程的疑问
显示并分析浮点数float在计算机内部的存放格式
要求:根据浮点数在通用计算机的IEEE 754标准存储格式,用vc++编写程序实现显示功能,之后自己举例验证,分析格式,验证所列举的与实际显示的是否一致。
我写了下面这个程序,

C/C++ code
#include<stdio.h>void Float(void *p){    long c;    int i,b[32];//存整数4个字节    c=*(long *)p;//p从空指针形式强制转换为long型 重要    for(i=0;i<32;i++)    {        b[i]=c&1;//通过空指针得到的一块数据,移位查看        c=c>>1;//右移    }    printf("y=");    for(i=31;i>=0;i--)        printf("%d",b[i]);    printf("\n");  }int main(){        float s;    scanf("%lf",&s);    Float(&s);           }

但是在VC6.0和VC2005不通过,会出现Runtime运行时错误,
在C-free下可以通过。
不知道是为什么,请高手帮忙看一下!

[解决办法]
float变量要用"%f","%lf"用于double类型
scanf("%f",&s);


[解决办法]
据说是vc的bug,把这两行都改了再试试
float s=1.234;
scanf("%f",&s);

[解决办法]
http://topic.csdn.net/u/20100603/10/7758c601-f667-47a5-ada3-2304c65169bd.html

读书人网 >C语言

热点推荐