【C】unsignedcharprintf的格式是什么?
今天想打印unsigned char 类型的值,但是不知道该⽤什么格式输出,所以就上⽹搜了⼀下,但是出现了五花⼋门的答案,⽐如说%c, %x, %u等等,就是没有看到正确的答案。
正确答案是%hhu。
1 2 3 4 5 6 7#include <stdio.h>
int main()
{
unsigned char ch = 23;    printf("ch = %hhu\n", ch);    return0;
}
结果如图:
这个答案是因为我最近刚好在看APUE,然后知道⾥⾯有讲到printf的格式问题,所以查看⼀下就搞定了。虽然这个问题不算什么难的问题,但是查起答案来,发现满意的答案并不多,所以我选择记下来。
并且补上这个printf的格式原型,以及各个可选参数是什么。
%[flags][fldwidth][precision][lenmodifier]convtype
flags的可选参数是:
标志                                          说明
‘                            (撇号)将整数按千位分组字符
–                            在字段内左对齐输出
+                          总是显⽰带符号转换的正负号
(空格)              如果第⼀个字符不是正负号,则在其前⾯加上⼀个空格
#                          指定另外⼀种转换形式(例如,对于⼗六进制格式,加0x前缀)
printf怎么输出字符
0                          添加前导0(⽽⾮空格)进⾏填充
fidwidth说明最⼩字段宽度,转换后参数字符数若⼩于宽度,则多余字符位置⽤空格填充。字段宽度是⼀个⾮负⼗进制数,或是⼀个(*)。
precision说明整型转换后最少输出数字位数、浮点数转换后⼩数点的最少位数、字符串转换后最⼤字节数。精度是⼀个点(.),其后跟随⼀个可选的⾮负⼗进制数或⼀个星号(*)。
宽度和精度字段两者皆可为*。此时,⼀个整型参数指定宽度或者精度的值,该整型参数正好位于被转换的参数之前。
觉得有点抽象的话,下⾯我给出了⼀个例⼦供参考。
1 2 3 4 5 6 7 8 9#include <stdio.h>
int main()
{
int ch = 22342233;
printf("ch = %*.*d\n", 3, 10, ch);
return0;
}
lenmodifier的可选参数:
长度修饰符                                          说明
hh                                将相应的参数按signed或unsigned char类型输出
h                                  将相应的参数按signed或unsigned short类型输出
l                                  将相应的参数按signed或unsigned long或宽字符类型输出
ll                                  将相应的参数按signed或unsigned long long类型输出
j                                    intmax_t或uintmax_t
z                                  size_t
t                                  ptrdiff_t
L                                  long double
convtype的可选参数:
转换类型                            说明
d、i                    有符号⼗进制
o                          ⽆符号⼋进制
u                          ⽆符号⼗进制
x、X                    ⽆符号⼗六进制
f、F                    双精度浮点数
e、E                    指数格式双精度浮点数
g、G                  根据转换后的值解释为f、F、e或者E
a、A                  ⼗六进制指数格式双精度浮点数
c                          字符(若带长度修饰符l,为宽字符)
s                          字符串(若带长度修饰符l,为宽字符)
p                          指向void的指针
n                        到⽬前为⽌,此printf调⽤的字符的数⽬将被写⼊到指针所指向的带符号整形中%                        ⼀个%字符
C                          宽字符(XSI扩展,等效于lc)
S                          宽字符串(XSI扩展,等效于ls)
这⼀篇⽂章搞定printf的输出格式问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。