##### 格式说明符
- 格式说明符
- 格式说明符用在一些函数的格式化字符串中, 总是以 `%` 符号开头, 用于告诉编译器在输入和输出操作中要打印或扫描的数据类型, 它基本上是变量值的占位符, 还可以包含其他标记来控制输出的宽度, 对齐方式, 填充字符等
- 语法
- `%[标记][宽度][.精度][格式修饰]格式说明符`
- `标记`
- `-` 待打印项左对齐
- `+` 有符号值显示相应的正负号
- ` ` 有符号值只显示的负号
- `#` 添加进制前缀或者始终显示小数点
- `0` 用零填充宽度
- `宽度` 最小字段宽度, 若不能容纳, 会自动扩宽
- `.精度` 指定小数点后的位数或字符串的最大长度
- `格式修饰`
- `h` 短整型
- `l` 长整型
- `ll` 长长整型
- `L` 长双精度浮点型
- `格式说明符`
- `%d` `%i` 有符号十进制整数
- `%o` 无符号八进制整数
- `%u` 无符号十进制整数
- `%x` `%X` 无符号十六进制整数
- `%c` 字符
- `%s` 字符串
- `%f` 浮点数
- `%e` `%E` 科学计数法
- `%g` `%G` 根据数值的大小自动选择使用普通计数法或科学计数法
- `%p` 指针
- `%%` 百分号
- 示例
```c
#include <stdio.h>
int main() {
printf("%-5d\n", 10); // 左对齐,宽度为5
printf("%+d\n", 10); // 正数前显示加号
printf("% d\n", 10); // 正数前加空格
printf("%#o\n", 10); // 八进制前加前缀0
printf("%#x\n", 10); // 十六进制前加前缀0x
printf("%05d\n", 10); // 用零填充,宽度为5
printf("%.2f\n", 3.14159); // 小数点后保留2位
printf("%.5s\n", "Hello, World!"); // 只输出前5个字符
return 0;
}
// 10
// +10
// 10
// 012
// 0xa
// 00010
// 3.14
// Hello
```