[STM32F0] 关于printf的格式输出

[复制链接]
1122|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位小数,你换浮点型输出试试看
...

谢谢~~~~~~~~~~~~~
 楼主| viseng 发表于 2017-6-8 13:47 | 显示全部楼层
谢谢楼上两位。。。。。。。。
lStarrySkyl 发表于 2018-12-11 11:40 | 显示全部楼层
应该是这么理解吧 QQ拼音截图20181211113559.png QQ拼音截图20181211113950.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

410

帖子

1

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