用于打印的转换说明符
| 转换说明符 | 参数类型 | 描述 |
|---|---|---|
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的样式。
最后,除非使用’#‘标志,否则应从结果的小数部分中删除任何尾随零,如果没有剩余小数部分,则应删除小数点字符。