函数原型: int printf(char * format[,argument,…]);
函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,则返回负数。
使用的一般形式为:
printf("格式控制字符串",输出项列表);
“输出项列表”列出要输出的表达式(如常量、变量、运算符表达式、函数返回值等),它可以是0个、一个或多个,每个输出项之间用逗号(,)分隔。输出的数据可以是整数、实数、字符和字符串。
例:
int a=1,b=2,c=3;
printf("a=%d b=%d c=%d\n",a,b,c); //a=1 b=2 c=3
“格式控制字符串"必须用英文的双引号括起来,控制输出项的格式和输出一些提示信息。
即例子中的 “a=%d b=%d c=%d\n” 部分,其中 “a=” 、“b=” 、“c=” 是普通字符,原样输出;“%d” 是格式控制符;”\n" 是转义字符,作用是换行。
格式控制字符串由3部分组成:普通字符、转义字符、输出项格式说明。
(1)普通字符:按原样输出,主要用于输出提示信息。
(2)转义字符:指明特定的操作,如 “\n” 表示换行,"\t" 表示水平制表等。
(3)格式说明部分:由“%”和“格式字符串”组成,他表示按规定的格式输出数据。
格式说明的形式为:%[flags][width][.prec][F|N|h|I][type]
各部分说明如下:
- “[]” 部分表示该项为可选项
- [flags] 为可选择的标志字符,标志字符有:
标志 | 意义 |
---|---|
- | 结果左对齐,右边填空格 |
+ | 输出符号(正号或负号) |
空格 | 输出值为正时冠以空格,为负时冠以负号 |
# | 对c、s、d、u类无影响; 对o类,在输出时加前缀o; 对x类,在输出时加前缀0x; 对e、g、f 类当结果有小数时才给出小数点。 |
- [width] 为可选择的宽度指示符,控制输出的最小宽度。
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。 - [.prec] 为可选的精度指示符,以“.”开头,后跟十进制整数。
如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。 - [F|N|h|I] 为可选的输出长度修饰符,其功能如下:
符号 | 含义 |
---|---|
F | 输出远指针存放的地址 |
N | 输出近指针存放的地址 |
h | 输出短整型数据的值 |
l | 输出长整型或双精度型数据的值 |
关于远指针和近指针可以看这篇博文:远指针和近指针,还有巨指针到底是啥玩意
- type 为可选的格式字符,用来进行格式转换。
格式字符 | 含义 |
---|---|
d | 以十进制形式输出带符号整数(正数不输出符号) |
o | 以八进制形式输出无符号整数(不输出前缀0) |
u | 以十进制形式输出无符号整数 |
x | 以十六进制形式输出无符号整数(不输出前缀0x),以小写abcdef表示 |
X | 以十六进制形式输出无符号整数(不输出前缀0x),以大写ABCDEF表示 |
c | 输出单个字符 |
s | 输出字符串 |
F/f | 以小数形式输出单、双精度实数 |
E/e | 以指数(科学计数法)形式输出单、双精度实数 |
G/g | 以%f或%e中较短的输出宽度输出单、双精度实数 |
PS. 用 “%%” 来输出字符 “%”
例:
#include<iostream>
using namespace std;
int main(){
int a=9;
double b=123.1234567;
char d='a';
printf("a=%d\n", a);
printf("a(%%d)=%d, a(%%2d)=%02d, a(%%o)=%o, a(%%x)=%x\n\n",a,a,a,a);
printf("a=%f\n", b);
printf("b(%%f)=%f, b(%%lf)=%lf, b(%%5.4lf)=%5.4lf, b(%%e)=%e\n\n",b,b,b,b);
printf("d=%c\n", d);
printf("d(%%c)=%c, d(%%8c)=%8c\n\n",d,d);
printf("%s\n","CHINA");
return 0;
}
输出结果如图: