用于打印的转换说明符
转换说明符 | 参数类型 | 描述 |
---|---|---|
i ,d |
INT | 打印小数 |
u |
unsigned int | 打印小数 |
o |
unsigned int | 打印八进制 |
x |
unsigned int | 打印十六进制,小写 |
X |
unsigned int | 打印十六进制,大写 |
f |
double |
如果没有给出精度,则打印浮点数,默认精度为 6(小写字母用于特殊数字 nan 和 inf 或 infinity ) |
F |
double |
如果没有给出精度,则打印浮点数,默认精度为 6(大写字母用于特殊数字 NAN 和 INF 或 INFINITY ) |
e |
double |
如果没有给出精度,则使用默认精度 6 打印浮点数,使用科学记数法使用尾数/指数; 小写指数和特殊数字 |
E |
double |
如果没有给出精度,则使用默认精度 6 打印浮点数,使用科学记数法使用尾数/指数; 大写指数和特殊数字 |
g |
double |
使用 f 或 e [见下文] |
G |
double |
使用 F 或 E [见下文] |
a |
double |
打印十六进制,小写 |
A |
double |
打印十六进制,大写 |
c |
Char | 打印单个字符 |
s |
字符* | 如果指定,则打印字符串直到 NUL 终止符,或截断为精度给定的长度 |
p |
无效* | 打印 void 指针值; nonvoid 指针应明确转换(cast )到 void* ; 指向对象的指针,而不是函数指针 |
% |
N / A | 打印% 字符 |
n |
int * | 将到目前为止打印的字节数写入指向的 int 。 |
请注意,长度修饰符可以应用于%n
(例如,%hhn
表示以下 n
转换说明符适用于指向 signed char
参数的指针,根据 ISO / IEC 9899:2011§7.21.6.1¶7)。
请注意,浮点转换适用于类型 float
和 double
,因为默认促销规则 - 第 6.5.2.2 节函数调用,¶7 函数原型声明符中*的省略号表示法导致参数类型转换在最后声明的参数之后停止。**默认参数提升是在尾随参数上执行的。*因此,printf()
等函数只能传递 double
值,即使引用的变量是 float
类型。
使用 g
和 G
格式,e
和 f
(或 E
和 F
)表示法之间的选择记录在 C 标准和 printf()
的 POSIX 规范中 :
表示浮点数的双参数应以
f
或e
的样式转换(或者在G
转换说明符的情况下以F
或E
的样式转换),具体取决于转换的值和精度。如果非零,则P
等于精度,如果省略精度,则为 ti,如果精度为零,则为 1。然后,如果使用样式E
的转换将具有X
的指数:
- 如果 P> X> = -4,则转换应采用
f
(或F
)和 precisionP - (X+1)
的样式。- 否则,转换应采用
e
(或E
)和 precisionP - 1
的样式。
最后,除非使用’#‘标志,否则应从结果的小数部分中删除任何尾随零,如果没有剩余小数部分,则应删除小数点字符。