不解,printf打印Double出来是错的

[复制链接]
6322|14
 楼主| megaf 发表于 2011-6-29 13:07 | 显示全部楼层 |阅读模式
本帖最后由 megaf 于 2011-6-30 08:23 编辑

不解,下面这条语句
printf("%.7f ,%.7f, %d ]",GPSData2.Latitude.lat,GPSData2.Longitude.lon,GPSData2.Status);执行后的结果是
26815622288819700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000 ,2.0000005, 1079719639 ],我在调试时能看见GPSData2.Latitude.lat,GPSData2.Longitude.lon,GPSData2.Status这三个数的值都是正确的,打出来就错了。现在可以确定是打印出的错,但是不解啊,SOS,
GPSData2.Latitude.lat,GPSData2.Longitude.lon定义为Double,GPSData2.Status定义为u8.
 楼主| megaf 发表于 2011-6-29 13:08 | 显示全部楼层
我用的的stm105和MDK ,不过和这个错误应该没关系吧
趴趴熊 发表于 2011-6-29 17:08 | 显示全部楼层
f 是 float

lf 才是 double
 楼主| megaf 发表于 2011-6-30 08:21 | 显示全部楼层
3# 趴趴熊
不是的,我查过了,在PRINTF中只用f.(在scanf中才有f和lf的区分,)
aaa2742 发表于 2011-6-30 11:20 | 显示全部楼层
 楼主| megaf 发表于 2011-6-30 13:14 | 显示全部楼层
呵呵,顶一个,
 楼主| megaf 发表于 2011-7-1 08:53 | 显示全部楼层
很是怀疑是STM32 存储的问题,但是想不明白,大家有遇到没
i55 发表于 2011-7-1 09:18 | 显示全部楼层
换IAR吧,MDK的bug挺多。
 楼主| megaf 发表于 2011-7-1 14:45 | 显示全部楼层
呵呵,解决问题要紧
香水城 发表于 2011-7-1 14:47 | 显示全部楼层
这种问题,手册里肯定有答案,还是找手册来看看吧,偏门的东西不是人人都用过的,:lol
mohanwei 发表于 2011-7-2 11:02 | 显示全部楼层
改成printf("%.7f ,%.7f, %d ]",(float)GPSData2.Latitude.lat,(float)GPSData2.Longitude.lon,(int)GPSData2.Status);看看
你看看printf的内部实现就知道了,传递时把所有变量都压到栈里,然后根据"%.7f ,%.7f, %d ]"这个字符串逐个解析……所以智能点的编译器会帮你检查一下参数是否一一对应,老的就没有了
 楼主| megaf 发表于 2011-7-4 09:08 | 显示全部楼层
10# 香水城 [/b
哪方面的手册,或者那个手册
 楼主| megaf 发表于 2011-7-4 09:09 | 显示全部楼层
11# mohanwei
谢谢,我也怀疑是这个问题,不过也对编译器mdk怀疑的,最近也发现其它问题,譬如说对zi区不清零。无语的很
anqier1 发表于 2011-7-4 13:09 | 显示全部楼层
学习帖呀
anqier1 发表于 2011-7-4 13:09 | 显示全部楼层
认真拜读下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:呵呵,赶上中国机器人发展的时代,中国机器人就靠我们这代人了,任重道远。

24

主题

81

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部