printf()函数中的#是什么意思? c程序员

时间:2014-05-11 06:42:57

标签: c printf

我正在阅读乘法表程序源代码,我在所有打印小数的#函数中遇到printf符号。

我使用源代码来查看它是否有任何区别,但对我来说一切似乎都是一样的。 #是什么意思,为什么他会在printf函数中使用它?

printf ("%#2d |", i);

编辑:我想知道为什么这个人在#函数中使用printf()作为他的乘法表时,他甚至不需要它。

http://en.kioskea.net/faq/7392-multiplication-table-as-c-table#note

每个人都从某个地方粘贴。不是我的问题的答案。

3 个答案:

答案 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转换,不会从结果中删除尾随零,否则它们将被删除。对于其他转换,结果是未定义的。