|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
double a=4.5;
printf("%d",a);
return 0;
}
这样写为什么系统不报错,而运行显示0呀?
因为你是用%d输出的。double是八个字节,你使用%d输出只能输出前四个字节。
double的4.5在内存中存储的前四个字节就是0,
你可以用此程序看一下
- #include <stdio.h>
- union Num{
- double lf;
- int d[2];
- char ch[8];
- };
- int main()
- {
- int i;
- union Num num;
- num.lf=4.5;
- printf("double类型的4.5存储,占8个字节\n");
- printf("f=%f\n两个四字节以16进制显示:",num.lf);
- for(i=0;i<2;i++)
- printf("d[%d]=%x\t",i,num.d[i]);
- printf("\n两个四字节以10进制显示:");
- for(i=0;i<2;i++)
- printf("d[%d]=%d ",i,num.d[i]);
- printf("\n八个单字节:");
- for(i=0;i<8;i++)
- printf("ch[%d]=%d ",i,num.ch[i]);
- return 0;
- }
复制代码
有兴趣的话,还可以看看我写的这个帖子
C语言中浮点数存储与%f输出细节探究
|
|