【C语言】printf函数的超详细解读

【C语言】printf函数的超详细解读_第1张图片

文章目录

  • 前言
  • printf函数的组成
    • 一、返回值
    • 二、参数之格式控制
      • 2.1、常见的转换说明及解释
      • 2.2、常见的修饰符及解释
        • 数字
        • 标记
      • 2.3、打印一般字符
    • 三、参数之输出表列


前言

当我们开始学习c语言时,我们接触到的第一个代码运行结果大概是这样的吧!
在这里插入图片描述
完成这样的代码仅需用到一个简单的函数 printf(),但就是这样一个函数有时也让人摸不着头脑,毕竟要想活用它,也要用心专研一下。


printf函数的组成

int printf( const char *format [, argument]… );
参数部分:格式表列 + 输出表列
返回值:输出的字符个数


一、返回值

注意是输出的字符
转义字符 = 1个字符
中间的两个双引号及其中间的空格不做计算,至于其作用下面会介绍

【C语言】printf函数的超详细解读_第2张图片

二、参数之格式控制

2.1、常见的转换说明及解释

转换说明 输出
%d 有符号十进制整数
%f 有符号的十进制浮点数,属于double类型
%c 单个字符
%s 字符串
%e(可大写) 浮点数,e计数法
%p 打印地址
%u 打印无符号十进制整数
%x(可大写) 打印十六进制整数
%o 打印八进制整数
%% 打印一个%

对于上述两个可大写的转换说明,其大小写区别如下:
%x
小 10 对应 a
【C语言】printf函数的超详细解读_第3张图片
大写 10 对应 A
【C语言】printf函数的超详细解读_第4张图片
%e同理
【C语言】printf函数的超详细解读_第5张图片
【C语言】printf函数的超详细解读_第6张图片


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为整数

解释:

  1. 结合修饰符和转换类型发现没有表示float类型?
    printf在打印浮点数时,float类型自动转换为double类型,%f,%lf,都是double类型,所以并没有float的专用转换说明

数字

但我们打印数据时,有时需要对数据进行精度控制,以及数据所占格数。而这就要用到数字
数字的输入可以归为 “m.n”,m,n均为整数,且二者可以只存在其中一个,如%8.2d: m=8, n=2,%.3f:m不存在,n = 3

  • m - 给点的字段宽度,如果给定的字段宽度小于实际宽度,则以实际为准
    【C语言】printf函数的超详细解读_第7张图片
  • n - 对应整型:无影响;对浮点数:保留n位小数;对字符串:截取前n个字符打印
    【C语言】printf函数的超详细解读_第8张图片

标记

负号(-):将打印项左对齐
【C语言】printf函数的超详细解读_第9张图片
【C语言】printf函数的超详细解读_第10张图片
+:有符号的值,若为正数,则前面显示+,若为负数则前面显示-
【C语言】printf函数的超详细解读_第11张图片
#:对于%x,%X,是将前置0x加上,%o是将前置0加上,
【C语言】printf函数的超详细解读_第12张图片
【C语言】printf函数的超详细解读_第13张图片
0:对于数值格式,用前导0代替空格填充字段宽度,对于整数格式,如果出现-和制定精度,则忽略该标记
【C语言】printf函数的超详细解读_第14张图片
【C语言】printf函数的超详细解读_第15张图片
空格:对于有符号值,若为正,则在值前显示前导空格,若为负,则在值前显示-
【C语言】printf函数的超详细解读_第16张图片


2.3、打印一般字符

对于下列字符打印需要用到转义字符
【C语言】printf函数的超详细解读_第17张图片


三、参数之输出表列

  • 输出表列即可以是:变量,也可以是常数
    【C语言】printf函数的超详细解读_第18张图片
  • 输出表列应与格式控制里的类型转换一一对应
    【C语言】printf函数的超详细解读_第19张图片
    **在这里只做浅显的解释: **
    不同的系统,不同的编译器参数传递的方式并不完全相同,笔者采用的是64位,windows,vs2022想细致的了解,则需要知晓数据在内存中的存储相关的知识,这里不做过多解释
    【C语言】printf函数的超详细解读_第20张图片
    作为初学者应保证,数据类型与转换说明是一一对应的。

最后,望各位未来的编程大佬点个小小的赞!
【C语言】printf函数的超详细解读_第21张图片

你可能感兴趣的:(c语言,交友)