printf
函数提供格式化输出转换。
格式串包含两种类型的对象:普通字符(直接被复制到输出流中)和转换字符(分别决定下一后续参数的的转换和打印)。
转换字符
u 无符号十进制表示
h 表示将相应的参数按
short
或者unsigned short
类型输出l 表示将相应的参数按
long
或者unsigned long
类型输出L表示将相应的参数按
long double
类型输出
备注:根据上述,如果是无符号数据类型,应该用u
,但如果数据类型是short
或者long
,不管是否是无符号都应该用对应的h
或者l
表示点号前数值:指定最小字段宽度。若参数的字符数小于此数值,则在参数左边填充一些字符(空格或0)
点号:用于分割字段的宽度和精度
-
表示精度的数:对于字符串,指定打印的字符串的最大个数;对于e、E、f转换,它指定打印的小数点后的数字位数;对于g或G转换,它指定打印的有效数字位数;对于整型数,它指定打印的数字位数(必要时可加填充位0以达到要求的宽度)
举例
/字符/
char a[] = "abcdefg";
printf("a = %.4s\n", a);//指定打印的字符串最大个数为4
//结果:a = abcd
/e,f转换/
double a = 3.1415926;
printf("a = %.4f\n", a);//指定打印的小数点后的数字位数为4
//结果:a = 3.1416
/g,G转换/
double a = 0.000001234567;
printf("a = %.5g\n", a);//指定打印的有效数字位数为5
//结果:a = a = 1.2346e-06
/整型数/
int a = 123;
printf("a = %.4d\n", a);//指定打印的数字位数为4,不够用0填充
//结果a = 0123
###参考
[C程序设计语言(第2版.新版)](https://book.douban.com/subject/1139336/)222页