int与float的转换问题

clleady 2009-08-03 08:40:41
void main()
{
flaot x=1;
int y;
x++;
y=x+1;
printf("x=%d,y=%f",x,y);
}
我认为应该是x=2,y=3.00000 但是运行结果是x=0,y=0.00000.
怎么回事呀,谢谢高手指教?
...全文
293 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjw6861982 2009-08-03
  • 打赏
  • 举报
回复
楼主需要了解FLOAT的内存布局
xiaotaoqibao 2009-08-03
  • 打赏
  • 举报
回复
你定义和输出的类型不一样,这是行不通的
这些都是系统的储存方式的不一样导致的
光宇广贞 2009-08-03
  • 打赏
  • 举报
回复
楼主需要了解一下FLOAT型的内存布局……
abcdef0966 2009-08-03
  • 打赏
  • 举报
回复
float的存储方式
http://hi.baidu.com/xiaoduo170/blog/item/8e79b617122dd601c83d6d7f.html
liao05050075 2009-08-03
  • 打赏
  • 举报
回复
你把一个浮点数用%d来输出,
把整型数用%f来输出

因为浮点数和整型数在内存中的表示是不同,所以输出结果自然不对
abcdef0966 2009-08-03
  • 打赏
  • 举报
回复
void main()
{
flaot x=1;
int y;
x++;
y=x+1; //y是整型,所以赋值时float值2.0转换为整型2
printf("x=%d,y=%f",x,y);
}

lz要注意printf只是将内存中的二进制数以你需要的格式控制读出来,并不能实现类型转换
还有一点就是float型的内存存储方式
所以整型值2=0x00……10按float解释成了0

而float值1.0按整型值也被解释成了一个错误的数
clleady 2009-08-03
  • 打赏
  • 举报
回复
能不能分析一下,为什么出现0,0的结果。每句代码之间到底是怎么转换的,我很想知道,谢谢!
liao05050075 2009-08-03
  • 打赏
  • 举报
回复
printf("x=%d,y=%f",x,y);
->
printf("x=%f,y=%x",x,y);

70,020

社区成员

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

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