1.转换说明
请求printf()函数打印数据的指令要与待打印数据的类型相匹配,这些指令符号被称为转换说明。例如:printf("%d",a);
转换说明 | 输出 |
%a | 浮点数、十六进制数和p计数法(C99 里16进制浮点数记数法。类似E,但不同。数以0x开头(数字0字母x),然后是16进制浮点数部分,接着是p,后面是以 2为底的阶码。) |
%A | 同上 |
%c | 单个字符 |
%d | 有符号十进制整数 |
%e | 浮点数、e计数法(小数点左侧一个数字,右侧六个小数) |
%E | 同上 |
%f | 浮点数,十进制计数法(默认6位小数) |
%g | 根据值的不同自动选择%f或%e。%e用于指数小于-4或者大于等于精度时。 |
%G | 同上(%E为被选择者) |
%i | 有符号十进制整数(与%d相同) |
%o | 无符号八进制整数 |
%p | 指针 |
%s | 字符串 |
%u | 无符号十进制整数 |
%x | 无符号十六进制整数,使用十六进制数0f |
%X | 同上(0F) |
%% | 打印一个% |
2.转换说明修饰符
在%和转换字符之间插入修饰符可修饰基本的转换说明,且输入多个转换字符的顺序与下表顺序相同。
修饰符 | 含义 |
-、+、空格、#和0 | 详见下一表格 |
数字 | 最小宽度。若是不能容纳字段长度,系统则会用更宽的宽度 |
.数字(看作小数) | 精度。 对于%e、%E、%f表示小数点右边数字位数; 对于%g和%G表示有效数字最大位数 对于%s表示待打印字符的最大数量 对于整型转换,表示待打印数字最小位数。如有必要可用前导0来达到这个位数 |
h | 和整型转换说明一起使用,表示short int和unsigned short int类型的值 |
hh | 和整型转换说明一起使用,表示signed char和unsigned char类型的值 |
j | 和整型转换说明一起使用,表示intmax_t和uintmax_t类型的值 |
l(L的小写) | 和整型转换说明一起使用,表示long int和unsigned long int类型的值 |
ll | 和整型转换说明一起使用,表示long long int和unsigned long long int类型的值 |
L | 和浮点转换说明一起使用,表示long double类型的值 |
t | 和整型转换说明一起使用,表示ptrdiff_t的值(他表示两个指针差值的类型) |
z | 和整型转换说明一起使用,表示size_t类型的值。(sizeof()的返回类型) |
标记 | 含义 |
- | 待打印字符左对齐 |
+ | 有符号值若为正,则在值前面显示加号。若为负,则在值前面显示减号 |
空格 | 有符号值若为正,则在值前导空格。若为负,则在值前面显示减号+标记覆盖一个空格 |
# | 把结果转换为另外一种形式。如果是%o,则以0开始,如果是%x或是%X,则以0x或0X开始。对于所有的浮点格式,#保证了即使后面没有任何数字,也打印一个小数点字符。对于%g和%G,#防止结果后面的0被删除。 |
0 | 对于数值格式,用前导0代替空格填充字段宽度。对于整数格式,如果出现-标记或指定精度,则忽略该标记。 |