首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C语言解码printf语句(Printf Primer)

用C语言解码printf语句(Printf Primer)
EN

Stack Overflow用户
提问于 2008-08-11 17:28:56
回答 6查看 4.3K关注 0票数 4

我正在努力把1998年到21世纪的一些旧代码。该过程中的第一步是将printf语句转换为QString变量。不管我回头看了多少次,我总会忘记一件或另一件事。因此,为了好玩,让我们一起解码它,为了我们的时间,并在这个过程中创建第一个小‘printf引物’的堆栈溢出。

在代码中,我偶然发现了这个小宝石,

代码语言:javascript
复制
printf("%4u\t%016.1f\t%04X\t%02X\t%1c\t%1c\t%4s", a, b, c, d, e, f, g);

变量a,b,c,d,e,f,g将如何格式化?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-08-11 18:11:45

丹尼基本上是对的。

a.无符号小数,最少4个字符,空格填充

b.浮点,小数前最少16位(0垫),小数后1位

c.十六进制,最少4个字符,0垫,字母用大写打印

d.与上述相同,但至少有2个字符

e. e被假定为int,转换为无符号字符并打印

f.与e相同

这可能是一个错误,4没有任何影响。如果是"%.4s",则将从字符串中打印最多4个字符。有趣的是,在这种情况下,字符串不需要以null结尾。

编辑:jj33指出了这里上b和g中的两个错误。

票数 5
EN

Stack Overflow用户

发布于 2008-08-11 18:19:57

@杰森日,如果少于4个字符,我认为最后的%4s中的4个是显着的。如果超过4个您是对的,%4s和%s将是相同的,但是在g %s中少于4个字符将被左对齐,%4s将在4个字符字段中右对齐。

B实际上是整个字段的最少16个字符,包括十进制数和小数点之后的个位数(我认为是16个字符对18个字符)。

票数 5
EN

Stack Overflow用户

发布于 2008-09-18 00:24:53

这是我的印刷品底漆:specs.html

我总是使用-Wall与gcc一起编译,这将警告所提供的printf格式和变量之间是否有任何不匹配。

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

https://stackoverflow.com/questions/7981

复制
相关文章

相似问题

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