我正在阅读乘法表程序源代码,我在所有打印小数的#
函数中遇到printf
符号。
我使用源代码来查看它是否有任何区别,但对我来说一切似乎都是一样的。 #是什么意思,为什么他会在printf
函数中使用它?
printf ("%#2d |", i);
编辑:我想知道为什么这个人在#
函数中使用printf()
作为他的乘法表时,他甚至不需要它。
http://en.kioskea.net/faq/7392-multiplication-table-as-c-table#note
每个人都从某个地方粘贴。不是我的问题的答案。
答案 0 :(得分:4)
来自http://www.cplusplus.com/reference/cstdio/printf/?kw=printf
与o,x或X说明符一起使用时,对于不同于零的值,该值分别以0,0x或0X开头。
与a,A,e,E,f,F,g或G一起使用时,即使后面没有更多数字,也会强制写入的输出包含小数点。默认情况下,如果没有数字,则不写入小数点。
它没有说明d
说明符会发生什么。
答案 1 :(得分:2)
<强>字符强>
#
<强>描述强>
替代形式。对于'g'和'G',不删除尾随零。对于'f','F','e','E','g','G',输出始终包含小数点。对于'o','x'和'X',分别为0,0x和0X,前置为非零数字。
来源:http://en.wikipedia.org/wiki/Printf_format_string#Format_placeholders
<强> 修改 强>
回答您的其他一个问题:
编辑:我想知道为什么这个人在printf()函数中使用# 当他甚至不需要时,他的乘法表。
好问题。 gcc发出警告:
警告:'#'标志与'%d'使用gnu_printf格式[-Wformat =]
你可能不得不问写剧本的人,因为我们在写作时并不知道他们在想什么,而且我们无法给你一个明确的答案。
答案 2 :(得分:1)
似乎要添加转换前缀或后缀。
以下是维基百科的一个例子:
printf("Color %s, number1 %d, number2 %05d, hex %#x, float %5.2f, unsigned value %u.\n", "red", 123456, 89, 255, 3.14159, 250);
将打印以下行(包括换行符,\ n):
Color red, number1 123456, number2 00089, hex 0xff, float 3.14, unsigned value 250.
你也可以参考&#39; man 3 printf&#39;,以下是它的快照
#
该值应转换为&#34;替代形式&#34;。对于o转换,输出字符串的第一个字符为零(如果它不是零,则前缀为0)。对于x和X转换,非零结果具有字符串&#34; 0x&#34; (或&#34; 0X&#34;用于X转换)前置。对于a,A,e,E,f,F,g和G转换,结果将始终包含小数点,即使其后面没有数字(通常,只有在这些转换的结果中出现小数点)数字如下)。对于g和G转换,不会从结果中删除尾随零,否则它们将被删除。对于其他转换,结果是未定义的。