打印
[STM32F0]

%0.2d代表什么?

[复制链接]
740|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
houcs|  楼主 | 2020-9-29 22:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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代表什么?

使用特权

评论回复
沙发
huanghuac| | 2020-9-29 22:30 | 只看该作者
查printf标准函数

使用特权

评论回复
板凳
houcs|  楼主 | 2020-9-29 22:31 | 只看该作者
整型输出也没有这个格式表示

使用特权

评论回复
地板
houcs|  楼主 | 2020-9-29 22:32 | 只看该作者
我用printf("\n\r  The current time is :  %0.2d:\n\r",tmp);试了下,tmp为2位,3位,4位整型都能正常打印出十进制数到串口

使用特权

评论回复
5
houcs|  楼主 | 2020-9-29 22:33 | 只看该作者
另外将%0.2d改为%2d也一样正常打印2,3,4位的整型。
这个%0.2d怎么回事?

使用特权

评论回复
6
houcs|  楼主 | 2020-9-29 22:34 | 只看该作者
如果2d也能用,为什么不简单点,如果格式有误,又能正常输出

使用特权

评论回复
7
zhuhuis| | 2020-9-29 22:36 | 只看该作者

%2d代表输出2位,是占位,不够前面补0
%0.2d代表输出2位小数,你换浮点型输出试试看

使用特权

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

使用特权

评论回复
9
chenho| | 2020-9-29 22:39 | 只看该作者

使用特权

评论回复
10
chenho| | 2020-9-29 22:40 | 只看该作者

使用特权

评论回复
11
houcs|  楼主 | 2020-9-29 22:41 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

743

主题

8382

帖子

5

粉丝