黑马程序员——C语言中的printf函数

时间:2022-04-11 00:26:04
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、printf函数介绍

1、printf函数

printf是C语言的标准的输出的库函数,能够以精确的格式输出程序运算的结果
printf的使用格式:printf("格式控制字符串",变量列表)

2、格式字符串

是由格式字符(包括:转换说明符、标志、域宽、精度)和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输出数据的数据类型、标志、长度和精度

3、输出项列表

可以是常量、变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上完全对应,否则,结果将不可预测。当有多个输出项时,各个输出项之间用逗号“,”分隔

黑马程序员——C语言中的printf函数

二、格式控制符使用说明

1、%d说明 

用于输出一个10进制的整数

    //定义整型变量
int sb=10,sb2=34;
printf("sb = %d,%d\n",sb,sb2); //输出结果为:sb = 10,34

2、%f说明

用于输出一个实数类型的数据(不能输出整形的数据)
默认的输出6为小数,如果数据小数部分不足6位,要补零

    //定义一个实数型(单精度)变量
    float f1 = 3.14f;
    printf("f1 =%f\n",f1); //输出结果为:f1 = 3.140000</p>
用%.mf来控制输出的小数点后的位数
    //定义一个实数型(单精度)变量    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);
//输出1888
如果要输出的数的位数 < 域宽m   要补空格
    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