------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、printf函数介绍
1、printf函数
printf是C语言的标准的输出的库函数,能够以精确的格式输出程序运算的结果
printf的使用格式:printf("格式控制字符串",变量列表)
2、格式字符串
是由格式字符(包括:转换说明符、标志、域宽、精度)和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输出数据的数据类型、标志、长度和精度
3、输出项列表
可以是常量、变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上完全对应,否则,结果将不可预测。当有多个输出项时,各个输出项之间用逗号“,”分隔
二、格式控制符使用说明
1、%d说明
用于输出一个10进制的整数
//定义整型变量
int sb=10,sb2=34;
printf("sb = %d,%d\n",sb,sb2); //输出结果为:sb = 10,34
2、%f说明
用于输出一个实数类型的数据(不能输出整形的数据)
默认的输出6为小数,如果数据小数部分不足6位,要补零
//定义一个实数型(单精度)变量用%.mf来控制输出的小数点后的位数
float f1 = 3.14f;
printf("f1 =%f\n",f1); //输出结果为:f1 = 3.140000</p>
//定义一个实数型(单精度)变量 float f1 = 3.141590f; //只打印小数点后两位 printf("f1 =%.2f\n",f1); //输出结果为:f1 = 3.14 //只打印小数点后三位 printf("f1 =%.3f\n",f1); //输出结果为:f1 = 3.142
用 %m.nf或%-m.nf来控制输出的数字位数和小数点后的位数,其中m表示总的位数(列数),n表示表示小数点后的位数,“-”表示右端补位
//定义一个实数型(单精度)变量
float f1 = 3.141590f;
//只打印小数点后三位
printf("f1 =%6.3f\n",f1); //输出结果为:f1 = 3.142 其中“ 3.142”一共六位(包含小数点)
//负号右端补位
printf("-6.2f\n",2.2); //输出结果为:2.20 ,其中“2.20 ”一共六位
3、其他
- %c 输出一个字符
- %s 输出一个字符串
- %o 把一个数,以八进制的形式输出
- %x 把一个数,以16进制的形式输出
- %p 输出地址
三、printf函数使用注意
1、%f的输出精度问题
%f打印出来后,float类型精度小数点后6位,有效数字是7位
//float类型的变量
float f1 = 3.1415926f;
//打印7位小数
printf("f1 = %.7f\n",f1); //希望输出3.1415926,但实际输出的是3.1415925
%f打印出来后,double类型精度小数点后6位,有效数字是15位
//double类型的变量
double f1 = 3.1415926f;
//打印7位小数
printf("f1 = %.7f\n",f1); //输出的是3.1415926
2、%md问题(设置域宽问题)
如果要输出的数的位数 > 域宽m 按照数据的实际位数输出
printf("%3d\n",1888);如果要输出的数的位数 < 域宽m 要补空格
//输出1888
printf("%-5d\n",10); //输出_ _ _10 (下划线表示空格)
m - 数字,这个数字可以为正,也可以为负:
m > 0 从左侧开始补空白
m < 0 从右侧开始补空白
3、%0md使用注意
%0md表示域宽不足部分补0,是%md的升级版
//%02d
for (int i=0; i<20; i++) {
printf("%02d_",i);
}
// 输出结果为01_02_03_04_05_06_07_08_09_10_11_12_13_14_15_16_17_18_19_
4、\t \n \r \\ %% 转义字符问题
//printf打印转义字符
printf("a\nb\n"); //输出结果:a
// b
printf("a\tb\n"); //输出结果:a b
printf("\\\n"); //输出结果:\
printf("%%\n"); //输出结果:%
printf("\"\n"); //输出结果:"
printf("\'\n"); //输出结果:'
printf("aaaa\rb\nbb"); //输出结果:aaaa
// b
// bb