有关单精度浮点数在计算机内部的存放格式编程的疑问
显示并分析浮点数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