printf ( print format )函数是接触C/C++之后接触的第一个函数,它的功能除了输出hello world外,更重要的是进行格式化输出,比如输出整数的%d,输出小数的%f,%lf 等等。

printf 格式化输出的完整格式为:% [flag] [width] [.precision] type
其中,常用等级为 type > [.precision] > [flag] > [width]
注意,实际使用的时候不带 [ ] .

1. type

type用法说明
%c输出一个字符
%s输出字符串
%hd %d %ld以十进制输出short,int,long类型变量
%ho %o %lo以八进制输出short,int,long类型变量
%hx %x %lx以十六进制输出short,int,long类型变量,且字母小写
%hX %X %lX以十六进制输出short,int,long类型变量,且字母大写
%#hx %#x %#lx加上#号,在前边加上0x,比如十六进制的a123变为0xa123
%f %lf以十进制输出 float,double 类型变量
%e %le以科学技术法输出 float,double 类型变量,且e为小写,比如0.0012就写为1.2e-3
%E %lE以科学技术法输出 float,double 类型变量,且e为大写,比如0.0012就写为1.2E-3
%g %lg以科学技术法或者十进制输出 float,double 类型变量,他会对比十进制输出和科学计数法哪个字符长度短,就用哪个输出,比如0.000012用十进制表示需要8个字符,用科学计数法1.2e-5只需要6个字符,则用科学计数法输出

2. [.precision]

对于小数,[.precision] 指定输出精度,即输出保留到小数点后多少位(主要用法)
对于整数,则表示最短输出长度,位数不足会在前边补0,比如 %.4d 输出23,输出为0023
对于字符串,表示最大输出长度,即截取字符串输出。

例子:

3. [flag]

flag用法说明
多行输出的时候,左对齐输出
+带正负号输出
空格带正负号输出,不过把正号换成了空格
#对于整数,要求输出禁止前缀,比如0x;对于小数,则强迫输出小数点之后的

4. [width]

指定最小输出长度,不足部分用空格补齐,使输出比较好看,当数据长度大于width时,width不再对数字生效