keil C 的变态输出!

bigbat 2008-02-29 04:59:35


printf("bef1 temp:x%x humi:x%x \n",temp_val.i,humi_val.i);
humi_val.f=(float)humi_val.i; //converts integer to float
temp_val.f=(float)temp_val.i; //converts integer to float
printf("bef2 temp:x%x humi:x%x \n",temp_val.i,humi_val.i);

输出结果很变态
bef1 temp:x180c humi:x276
bef2 temp:x45c0 humi:x441d
bef1 temp:x180e humi:x290
bef2 temp:x45c0 humi:x4424
bef1 temp:x180e humi:x27e
bef2 temp:x45c0 humi:x441f



大家谁见过!
...全文
56 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2008-03-01
  • 打赏
  • 举报
回复
楼主这分给的怪,没找到原因呢就结贴,还都给一个人
用户 昵称 2008-03-01
  • 打赏
  • 举报
回复
估计是转换的时候,没按值转换,直接将内存copy过来了。要不 就是个union
lbing7 2008-02-29
  • 打赏
  • 举报
回复
类型强制转换后,值被改了???

humi_val.f=(float)humi_val.i; //converts integer to float
temp_val.f=(float)temp_val.i; //converts integer to float

想看看这几个东西的定义...

呵呵

有可能是一个共用体,如果是的话,那么到有值得好好看看...

因为,INT弄的FLOAT型的存储结构的确不一样

要是变了,那很正常...

呵呵
vc8fans 2008-02-29
  • 打赏
  • 举报
回复
顶....

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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