c语言输出函数printffprintf使用修饰符格式化输出不同类型的变量。在这里总结一下各种不同的修饰符以及输出数据的格式。

修饰符

修饰符参数类型含义
f/gfloat/double浮点小数
dchar/short/int十进制数
uunsigned char/unsigned short/unsigned int无符号十进制数
cchar一个字符
schar[]/char*一个字符串
p*指针类型
ldlong int 长整型十进制
luunsigned long int无符号长整型十进制
lldlong long int 长整型十进制
lluunsigned long long int无符号长整型十进制
x/Xint16进制小写/大写
oint8进制
e float/double科学计数法
c语言输出修饰符

主要的修饰符如上表所示,而且可以在%和修饰符之间添加一个整型数字来指定输出内容的宽度,以及对齐方式。超出宽度的字符正常输出,负数表示左对齐:

char k[ 11 ] = "1234567890";
printf("\t|123456789ABCDEFGHIJK|\n");
printf( "(%%s)\t|%s|\n", k );
printf( "(%%7s)\t|%7s|\n", k );
printf( "(%%14s)\t|%14s|\n", k );
printf( "(%%-7s)\t|%-7s|\n", k );
printf( "(%%-14s)\t|%-14s|\n", k );
/*
        |123456789ABCDEFGHIJK|
(%s)    |1234567890|
(%7s)   |1234567890|
(%14s)  |    1234567890|
(%-7s)  |1234567890|
(%-14s) |1234567890    |
*/

另外针对整型和浮点型有特别的标识可以使用。

整型

整型主要包括shortintlong intlong long int以及它们对应的无符号类型unsigned shortunsigned intunsigned long intunsigned long long int。整型可以以十进制(%d)、十六进制(%x)、八进制(%o)。

int l = 31;
printf( "十进制(%%d)\t%d\n", l );
printf( "十六进制(%%x,%%X)\t%x,%X\n", l, l );
printf( "八进制(%%o)\t%o\n", l );
printf( "十进制(%%04d,%%4d)\t%04d,%4d\n", l, l );
printf( "十六进制(%%04x,%%4X) \t%04x,%4X\n", l, l );
printf( "八进制(%%o04o,%%4o)\t%04o,%4o\n", l, l );
/*
十进制(%d)      31
十六进制(%x,%X) 1f,1F
八进制(%o)      37
十进制(%04d,%4d)        0031,  31
十六进制(%04x,%4X)      001f,  1F
八进制(%o4o,%4o)        0037,  37
*/

浮点型

浮点型主要包括floatdouble两种类型。可以使用%f,%g,%e进行输出。

其中%g和%s都以科学计数法的方式输出,不过%g在默认情况下包括整数位共输出六位,而%f和%e默认小数位数为六位。不过可以通过.m来指定小数点后面的位数。

char*  m = "1234567.88889999";
double n = 1234567.88889999;
printf( "%%s\t|%s|\n", m );
printf( "%%f\t|%f|\n", n );
printf( "%%g\t|%g|\n", n );
printf( "%%e\t|%e|\n", n );
printf( "%%.3f\t|%.3f|\n", n );
printf( "%%.3g\t|%.3g|\n", n );
printf( "%%.3e\t|%.3e|\n", n );
/*
%s      |1234567.88889999|
%f      |1234567.888900|
%g      |1.23457e+06|
%e      |1.234568e+06|
%.3f    |1234567.889|
%.3g    |1.23e+06|
%.3e    |1.235e+06|
*/

参考

  1. C语言printf指定宽度的格式化输出 – 知乎 (zhihu.com)
  2. C/C++中浮点数输出格式问题 – sfesly – 博客园 (cnblogs.com)
最后修改日期: 2021-11-07