##### 格式说明符 - 格式说明符 - 格式说明符用在一些函数的格式化字符串中, 总是以 `%` 符号开头, 用于告诉编译器在输入和输出操作中要打印或扫描的数据类型, 它基本上是变量值的占位符, 还可以包含其他标记来控制输出的宽度, 对齐方式, 填充字符等 - 语法 - `%[标记][宽度][.精度][格式修饰]格式说明符` - `标记` - `-` 待打印项左对齐 - `+` 有符号值显示相应的正负号 - ` ` 有符号值只显示的负号 - `#` 添加进制前缀或者始终显示小数点 - `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 ```