打印
[STM32F0]

关于printf的格式输出

[复制链接]
931|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
viseng|  楼主 | 2017-6-7 14:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
printf("\n\r  The current time is :  %0.2d:%0.2d:%0.2d \n\r", RTC_TimeStruct.RTC_Hours, RTC_TimeStruct.RTC_Minutes, RTC_TimeStruct.RTC_Seconds);
上面是青风例程中的打印当前时间的代码
这里有一个不理解的,%0.2d代表什么?查printf标准函数,整型输出也没有这个格式表示
我用printf("\n\r  The current time is :  %0.2d:\n\r",tmp);试了下,tmp为2位,3位,4位整型都能正常打印出十进制数到串口,另外将%0.2d改为%2d也一样正常打印2,3,4位的整型。
这个%0.2d怎么回事?如果2d也能用,为什么不简单点,如果格式有误,又能正常输出
请高手指点...
沙发
forgot| | 2017-6-7 16:21 | 只看该作者
%2d代表输出2位,是占位,不够前面补0
%0.2d代表输出2位小数,你换浮点型输出试试看

使用特权

评论回复
板凳
dongnanxibei| | 2017-6-7 21:56 | 只看该作者
首先说明第一种不常用,因为int型%0.2d和%02d输出一样,都是输出两位,不足前面补0,小数点后面是几表示保留几位小数输出。%2d是指输出的数有两位,不足前面补空格,如果数字本身大于两位,则无效了。%02d是指输出两位,不足前面补0!!

使用特权

评论回复
地板
viseng|  楼主 | 2017-6-8 13:46 | 只看该作者
forgot 发表于 2017-6-7 16:21
%2d代表输出2位,是占位,不够前面补0
%0.2d代表输出2位小数,你换浮点型输出试试看
...

谢谢~~~~~~~~~~~~~

使用特权

评论回复
5
viseng|  楼主 | 2017-6-8 13:47 | 只看该作者
谢谢楼上两位。。。。。。。。

使用特权

评论回复
6
lStarrySkyl| | 2018-12-11 11:40 | 只看该作者
应该是这么理解吧

使用特权

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

本版积分规则

44

主题

410

帖子

1

粉丝