
前言
当我们开始学习c语言时,我们接触到的第一个代码运行结果大概是这样的吧!

完成这样的代码仅需用到一个简单的函数 printf(),但就是这样一个函数有时也让人摸不着头脑,毕竟要想活用它,也要用心专研一下。
printf函数的组成
int printf( const char *format [, argument]… );
参数部分:格式表列 + 输出表列
返回值:输出的字符个数
一、返回值
注意是输出的字符
转义字符 = 1个字符
中间的两个双引号及其中间的空格不做计算,至于其作用下面会介绍

二、参数之格式控制
2.1、常见的转换说明及解释
| 转换说明 | 输出 |
|---|---|
| %d | 有符号十进制整数 |
| %f | 有符号的十进制浮点数,属于double类型 |
| %c | 单个字符 |
| %s | 字符串 |
| %e(可大写) | 浮点数,e计数法 |
| %p | 打印地址 |
| %u | 打印无符号十进制整数 |
| %x(可大写) | 打印十六进制整数 |
| %o | 打印八进制整数 |
| %% | 打印一个% |
对于上述两个可大写的转换说明,其大小写区别如下:
%x
小 10 对应 a
大写 10 对应 A
%e同理
2.2、常见的修饰符及解释
| 字母 | 意义 |
|---|---|
| h | 与整型转换类型说明一起用,表示short int 和 unsigned int类型的值,如%hd, %hu |
| hh | 与整型转换类型说明一起用,表示signed char和 unsigned char类型的值,如%hhd, %hhu |
| l | 与整型转换类型说明一起用,表示long int 和 unsigned long int类型的值,如%ld,%lu |
| ll | 与整型转换类型说明一起用,表示long long int 和 unsigned long long int 类型,如%lld, %llu |
| L | 与浮点型转换说明一起使用,表示long double类型,如%Lf |
| z | 与整型转换类型说明一起用,表示size_t (即unsigned int),是sizeof的返回类型 |
| 标记 | -,+,#,0,空格 |
| 数字 | 用于%m.n+(修饰符)+转换类型,m和n为整数 |
解释:
- 结合修饰符和转换类型发现没有表示float类型?
printf在打印浮点数时,float类型自动转换为double类型,%f,%lf,都是double类型,所以并没有float的专用转换说明
数字
但我们打印数据时,有时需要对数据进行精度控制,以及数据所占格数。而这就要用到数字
数字的输入可以归为 “m.n”,m,n均为整数,且二者可以只存在其中一个,如%8.2d: m=8, n=2,%.3f:m不存在,n = 3
- m - 给点的字段宽度,如果给定的字段宽度小于实际宽度,则以实际为准
- n - 对应整型:无影响;对浮点数:保留n位小数;对字符串:截取前n个字符打印
标记
负号(-):将打印项左对齐
+:有符号的值,若为正数,则前面显示+,若为负数则前面显示-
#:对于%x,%X,是将前置0x加上,%o是将前置0加上,
0:对于数值格式,用前导0代替空格填充字段宽度,对于整数格式,如果出现-和制定精度,则忽略该标记
空格:对于有符号值,若为正,则在值前显示前导空格,若为负,则在值前显示-
2.3、打印一般字符
对于下列字符打印需要用到转义字符
三、参数之输出表列
- 输出表列即可以是:变量,也可以是常数
- 输出表列应与格式控制里的类型转换一一对应
**在这里只做浅显的解释: **
不同的系统,不同的编译器参数传递的方式并不完全相同,笔者采用的是64位,windows,vs2022、想细致的了解,则需要知晓数据在内存中的存储相关的知识,这里不做过多解释
作为初学者应保证,数据类型与转换说明是一一对应的。
最后,望各位未来的编程大佬点个小小的赞!

本文详细解析了C语言中printf函数的功能与用法,包括其返回值的意义、格式控制符的作用,以及如何通过修饰符来调整输出内容的展示形式。


















5万+

被折叠的 条评论
为什么被折叠?



