fwrite的2进制读写问题

ocpbase 2004-11-22 03:06:13
以wb方式打开文件,写入
double a=3;
fwrite(&a,sizeof(double),1,fp);
怎么会是00 00 00 00 00 00 08 40
所有 double 型,写入后,最后一个都是40,然后倒数第2个字节也不是需要的数字。
...全文
141 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
beepbug 2004-11-22
  • 打赏
  • 举报
回复
1.关于浮点处理,至今只有一个IEEE标准(标准号忘了),且有许多C/C++编译器并不遵循这个标准。你不知道你用的编译器的浮点格式,你怎么看得懂?
2.不要去关心变量的“地址”。这是一个逻辑的、相对的“地址”,不是真正的物理内存地址。你这样查看它,没什么实际意义。也奉劝其他弟兄们别费那力气了。有精力,还是干点正事吧。
ocpbase 2004-11-22
  • 打赏
  • 举报
回复
学过组成原理,还是觉得乱。
geland 2004-11-22
  • 打赏
  • 举报
回复
建议你看一下计算机的数制部分的内容,有些东西不是想当然的那么简单,你知道INT型数据的表示形式,并不表示你也可以触类旁通DOUBLE型数据的表示形式


ocpbase 2004-11-22
  • 打赏
  • 举报
回复
但编译器总有个规则来保存的。
ocpbase 2004-11-22
  • 打赏
  • 举报
回复
搞不清。。。
geland 2004-11-22
  • 打赏
  • 举报
回复
搞清楚了吗,如果你知道double型数据是怎样保存,就告诉我好不好?
geland 2004-11-22
  • 打赏
  • 举报
回复
呵呵,我真还要学习一下了

那你说double d=3.1415926应该怎么保存呢?
ocpbase 2004-11-22
  • 打赏
  • 举报
回复
double a=3
结果就不会是 00 00 00 00 00 00 03 00??
拜托,学c的搞不清这个东西有点被糊弄的感觉。。。
geland 2004-11-22
  • 打赏
  • 举报
回复
你管人家double型数据是怎样保存的呢?
ocpbase 2004-11-22
  • 打赏
  • 举报
回复
没人解释一下?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧