打印

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

[复制链接]
5164|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的区分,)

使用特权

评论回复
5
aaa2742| | 2011-6-30 11:20 | 只看该作者
:funk:

使用特权

评论回复
6
megaf|  楼主 | 2011-6-30 13:14 | 只看该作者
呵呵,顶一个,

使用特权

评论回复
7
megaf|  楼主 | 2011-7-1 08:53 | 只看该作者
很是怀疑是STM32 存储的问题,但是想不明白,大家有遇到没

使用特权

评论回复
8
i55| | 2011-7-1 09:18 | 只看该作者
换IAR吧,MDK的bug挺多。

使用特权

评论回复
9
megaf|  楼主 | 2011-7-1 14:45 | 只看该作者
呵呵,解决问题要紧

使用特权

评论回复
10
香水城| | 2011-7-1 14:47 | 只看该作者
这种问题,手册里肯定有答案,还是找手册来看看吧,偏门的东西不是人人都用过的,:lol

使用特权

评论回复
11
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 ]"这个字符串逐个解析……所以智能点的编译器会帮你检查一下参数是否一一对应,老的就没有了

使用特权

评论回复
12
megaf|  楼主 | 2011-7-4 09:08 | 只看该作者
10# 香水城 [/b
哪方面的手册,或者那个手册

使用特权

评论回复
13
megaf|  楼主 | 2011-7-4 09:09 | 只看该作者
11# mohanwei
谢谢,我也怀疑是这个问题,不过也对编译器mdk怀疑的,最近也发现其它问题,譬如说对zi区不清零。无语的很

使用特权

评论回复
14
anqier1| | 2011-7-4 13:09 | 只看该作者
学习帖呀

使用特权

评论回复
15
anqier1| | 2011-7-4 13:09 | 只看该作者
认真拜读下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

24

主题

81

帖子

1

粉丝