C语言标准输出格式化

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

修饰符

科学计数法

c语言输出修饰符

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

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

整型

整型主要包括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来指定小数点后面的位数。

参考

  1. C语言printf指定宽度的格式化输出 - 知乎 (zhihu.com)
  2. C/C++中浮点数输出格式问题 - sfesly - 博客园 (cnblogs.com)