一个关于printf();输出格式问题

BIMOZHI 2011-03-04 10:20:48
#include<stdio.h>
void main ()
{
float a,b;
a=5;
b=3;
printf("a=%d b=%d\n",a,b);//故意的%d
}
输出 a=0 b=1075052544 为什么?(b的值小于2^32)
我开始以为是printf()有输出缓冲问题,把a的值改成很大,最后输出a仍然是零,只是b的值稍微变了点(后几位)我也用vc6.0调试了可是调试不出来,我的win7 32位系统
...全文
122 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cd2008 2011-03-04
  • 打赏
  • 举报
回复
参考
http://zh.wikipedia.org/wiki/IEEE_754

http://en.wikipedia.org/wiki/IEEE_754-1985
BIMOZHI 2011-03-04
  • 打赏
  • 举报
回复
BIMOZHI 2011-03-04
  • 打赏
  • 举报
回复
canshui 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hnuqinhuan 的回复:]
浮点数 和int的存储格式不一样
[/Quote]
就因为这个……
BIMOZHI 2011-03-04
  • 打赏
  • 举报
回复
右下角的调试信息表明a b内已经是正确的值了,可用printf()下后变为那样了呢?
無_1024 2011-03-04
  • 打赏
  • 举报
回复
浮点数 和int的存储格式不一样
w0911h 2011-03-04
  • 打赏
  • 举报
回复
浮点数在内存中有符号位,阶码和尾数三部分,和整型的存储方式不一样,你这样是直接把本来被解释成浮点型的内存解释成整型,自然就错了
http://zhaojinguorui.blog.163.com/blog/static/16596290200862705010554/
饥饿书生 2011-03-04
  • 打赏
  • 举报
回复
楼上正解,
你可改成 printf("a=%f, b=%f\n");
BIMOZHI 2011-03-04
  • 打赏
  • 举报
回复
是呀,可vc6.0 的输出两个怎么不都是零啊
flyerwing 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]
浮点数与整数的表示方式是不一样的
你这样就是用整数的方式来解释一个浮点数
[/Quote]
好象是这样的吧.
justkk 2011-03-04
  • 打赏
  • 举报
回复
浮点数与整数的表示方式是不一样的
你这样就是用整数的方式来解释一个浮点数

70,020

社区成员

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

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