首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在printf格式规范中理解%03.3u

在printf格式规范中理解%03.3u
EN

Stack Overflow用户
提问于 2019-12-18 03:20:59
回答 1查看 1.1K关注 0票数 0

我使用printf输出内容。现在,我在另一个人的代码中看到格式规范为"%03.3u“,根据我的理解,在点已经将输出的宽度指定为3位之前,并在没有3的情况下填充零,而点后面的"3”还指定应该有3位数字输出。因此,它似乎"03“之前的点和"3”后的点被复制。

我做以下测试:

代码语言:javascript
复制
    char l[50];

    sprintf(l, "%03.3u", 5);
    sprintf(l, "%03u", 5);
    sprintf(l, "%.3u", 5);  

并确认输出始终为005。那么为什么其他人应该使用"%03.3u“而不是"%03u”或"%.3u“呢?

EN

回答 1

Stack Overflow用户

发布于 2019-12-18 03:50:58

03是带零填充的字段宽度.这意味着至少要输出3个字符(),如果少于3个字符,则向左显示零。

第二个3是输出的位数的最小数。

当这两种情况都被指定时,将应用精度,如果结果比最小字段宽度窄,则输出将被填充。例如,printf("q%6.3u", 5)将产生q 005。(我使用q,因为堆栈溢出格式会占用空格)。

如果您正在打印一个无符号整数,并且没有使用符号标志,那么数字的数量与字段宽度相同(因为唯一的输出是数字)。%03u%.3u%03.3u都有相同的效果。

我猜这个人写了%03.3u,因为他们没有正确理解这些东西的含义,所以他们猜到了一些东西,它起了作用,他们决定不再做任何进一步的改变。

如果您打印一个符号字符,则字段宽度与数字计数不同,例如,您可以尝试使用%+3u%+.3u。或者如果使用%d并打印一个负数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59385035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档