![caea935d8a34fef3a84883c2a8be68cc.gif](https://i-blog.csdnimg.cn/blog_migrate/a58c48493c5095c04011fac81e2f31dd.gif)
printf()这个函数,但凡学习编程的童鞋们,那应该是没有人不知道的,很多童鞋一看,就会想,不就是输出数据吗,这有什么可讲的?
![acfb27507865716b44105fe6ac651220.png](https://i-blog.csdnimg.cn/blog_migrate/cc874e0fccc1ab825ac54cddb851ef2b.jpeg)
童鞋,你真的了解printf()吗?你真的会用printf()吗?是的,会用,会输入一个单词,会输出一个数据,会输出一句话。但是!童鞋,请你输出几个数据,默认右对齐,左边用“*”符号填充,数据宽度为10,精度为6。
![8ea4b5059ebfd4d7595c211cc122a2e5.png](https://i-blog.csdnimg.cn/blog_migrate/192874186e2afd97d6eefcc0da8615ab.jpeg)
如果不会,请参看上个表情包,然后认真听讲,记笔记。
printf()函数为格式化输出函数,函数最后一个字符‘f’就表示“格式”(format)的意思,它的功能是按照用户指定的格式将数据输出到屏幕上。下面呢是printf()函数的调用形式。
printf("格式控制字符串", [输出列表]);
格式控制字符串用于指定输出格式,它由格式控制串和非格式控制字符串组成。格式控制字符串以符号%开头,后面跟有各种格式控制字符,指定输出数据的类型、形式、长度、精度等,格式控制字符串的具体形式看下面。
"%[标志][宽度][.精度][长度]类型"
标志、宽度、精度、长度等都是可选的,但“%类型”是必须要指定的,比如以%c格式输出一个字符,以%d输出一个整数。
说完格式,下面拆解细讲每一部分。
第
1
点
类型
printf()函数可以输出任意类型的数据,如整型、字符型、浮点型数据等,它常用的输出类型格式控制字符如下表。
![8124cef7f142f8f3f5f0b36e2e11c79e.png](https://i-blog.csdnimg.cn/blog_migrate/beb51111056ba4f2b3e2537752208f35.png)
使用输出类型格式控制字符可以输出不同类型的数据,示例代码如下。
//以%c格式输出字符'H'
printf("%c", 'H');
//以%s格式输出字符串"Hello, world!"
printf("%s", "Hello, world!\n");
//以%d格式输出整数100
printf("%d", 100);
printf()函数就会按照指定的类型输出后面的参数数据,每一个格式控制字符对应一个参数,如果要连续输出多个数据,就要相应的要使用多个控制字符。
//使用3个%d输出三个整数1、2、3
printf("%d%d%d\n", 1, 2, 3);
//使用%f与%c输出2.1与字符'a'
printf("%f\n%c\n", 2.1, 'a');
第1行输出三个连续整数,1、2、3这三个整数会自动与3个%d从前往后匹配。第2行代码也是如此,浮点数2.1会自动与%f匹配,字符‘a’会自动与%c匹配。
第
2
点
标志
printf()函数中的标志字符用于规范数据的输出格式,如左对齐、右对齐、空缺填补等,标志符有“-”、“+”、“0”、空格、“#”五种。
![7ee396a14d4d6f187b28f3fc4bfb34af.png](https://i-blog.csdnimg.cn/blog_migrate/bd5a97b7b4f9a313d0caac1c8c9735b7.png)
第
3
点
宽度
用十进制整数来表示输出数据的最少位数,若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
以不同的宽度输出数据123,示例代码如下。
//默认宽度
printf("%d\n", 123);
//设置宽度为5
printf("%5d\n", 123);
//设置宽度为10
printf("%10d\n", 123);
上述代码输出结果如下图。
![8e973d92fa1147c417864012e7108615.png](https://i-blog.csdnimg.cn/blog_migrate/773dda10d87315e397eb9c1e77f92df9.png)
printf()输出数据默认是右对齐,当数据实际位数少于设置的宽度时,左侧以空格填充。我们也可以结合标志位调整对齐方式或者以0填充左侧空缺。
printf("%d\n", 123);
//添加“-”符号,左对齐输出
printf("%-5d\n", 123);
//添加0,左边以0填充
printf("%010d\n", 123);
上述代码的运行结果如下图。
![5800dc64d5ec42527d52f4db0c6c8863.png](https://i-blog.csdnimg.cn/blog_migrate/a76b60af6d6da699baf6f708e8035a73.png)
添加“-”符号标志位输出数据,第二个123变成了左对齐,添加“0”标志位后,第三个123左侧空缺以0填充了。读者可尝试使用其他标志位输出数据查看输出格式的变化。
第
4
点
精度
精度格式以字符“.”开头,后面跟十进制整数,精度主要作用于浮点型数据,表示输出小数点后面的位数。如果作用于整型数据,则表示按照一定宽度输出数据,左侧空缺填充0。在使用精度输出时,若实际位数大于所定义的精度数,则截去超出的部分。
精度的使用示例代码如下所示:
//默认输出小数点后6位
printf("%f\n", 1.234567);
//输出小数点后8位,后面填充0
printf("%.8f\n", 1.234567);
//输出小数点后3位,截断超出的部分
printf("%.3f\n", 1.234567);
//输出123的宽度为6,左侧填充0
printf("%.6d\n", 123);
上述代码的运行结果如下图。
![b7f48a6596d24ed12b53d14845436f21.png](https://i-blog.csdnimg.cn/blog_migrate/41ece07e36ea193dd015e1c2829ea7d2.png)
第
5
点
长度
长度格式控制字符包括h、l两种,h表示按短数据类型量输出;l表示按长数据类型输出。长度格式控制输出示例代码如下:
//正常输出
printf("%d\n", 123);
//按短数据类型输出
printf("%hd\n", 123);
//按长数据类型输出
printf("%lf\n", 1.23);
长度格式控制在printf()函数中不常使用,我们能够了解就可以了。
怎么样,这下还敢说你会用printf()函数吗?但凡我们越觉得简单的事物,越蕴含着万千道理,特别在学习编程时,万不可小看任何一个知识点。关于printf()函数呢,今天我们就讲到这里,如果想进行更深入的学习,请关注黑马程序员参与更多互动。
![38128f8eb0fe5507b01ee707381a75ea.gif](https://i-blog.csdnimg.cn/blog_migrate/26b2dfdb9aac83af845d2af0460cf768.gif)
求点赞、求好看、求分享
![b91d41b4224aa0d78f2b8b54e983d290.png](https://i-blog.csdnimg.cn/blog_migrate/79074afd2e9d810a3fd5ccdf6c692e6b.png)