C语言printf格式化输出修饰符
printf()的格式符
转换说明 | 输出 |
---|
%a, %A | 浮点数、十六进制数和p-计数法(C99) |
%c | 一个字符 |
%d | 有符号十进制数 |
%e, %E | 浮点数,e计数法 |
%f | 单精度浮点数,十进制计数法 |
%lf | 双精度浮点数,十进制计数法 |
%Lf | long double浮点数,十进制计数法 |
%g, %G | 根据数值不同自动选择 %f 或 %e , %e 格式在指数小于-4或者大于等于精度时使用 |
%i | 有符号十进制整数(与 %d 相同) |
%u | 无符号十进制整数 |
%o | 无符号八进制整数 |
%x, %X | 使用十六进制数0f的无符号十六进制整数 |
%p | 指针 |
%s | 字符串 |
%% | 打印一个百分号 |
printf()的标志
符号 | 说明 | 示例 |
---|
- | 项目左对齐,即,会把项目打印在字段的左侧开始处 | 示例: “%-20s” |
+ | 有符号的值若为正,则显示带加号的符号;若为负,则显示带减号的符号 | 示例: “%+6.2f” |
(空格) | 有符号的值若为正,则显示时带前导空格(但是不显示符号);若为负,则带减号符号,+标志会覆盖空格标志 | 示例: “% 6.2f” |
# | 使用转换说明的可选形式。若为 %o 格式,则以0开始;若为 %x, %X 格式 ,则以0x或0X开始。对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符。对于%g和%G格式,它防止尾随0被删除 | 示例: “%#o”, “%#8.0f”, “%+#10.3E” |
0 | 对于所有的数字格式,用前导零而不是空格填充字段宽度。如果出现-标志或者指定了精度(对于整数)则忽略该标志 | 示例: “%010d”, “%08.3f”,"%02X" |
一个示例
输出浮点数的科学计数法形式,其中e前面的小数保留5位数字。需要注意的是,科学计数法表示的浮点数指数部分有三位的也有两位,看编译器和不同的标准。
#include <stdio.h>
int main()
{
printf("%.5e\n", 3.12346823e10);
return 0;
}