C语言printf详细解析

 1.类型:

表示输出类型的格式字符      格式字符意义

a                                            浮点数、十六进制数字和p-计数法(C99

A                                            浮点数、十六进制数字和p-计数法(C99)
c                输出单个字符
d                以十进制形式输出带符号整数(正数不输出符号)
e                以指数形式输出单、双精度实数
E                以指数形式输出单、双精度实数
f                 以小数形式输出单、双精度实数

g                以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大  于等于精度时使用

G                以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用
i                                             有符号十进制整数(与%d相同)

o                以八进制形式输出无符号整数(不输出前缀O)
p                                            指针
s                输出字符串
x                以十六进制形式输出无符号整数(不输出前缀OX)
X                以十六进制形式输出无符号整数(不输出前缀OX)
u               以十进制形式输出无符号整数

2.标志
标志字符为-、+、#、空格和0五种,其意义下表所示:

标志格式字符      标 志 意 义
-             结果左对齐,右边填空格。
+             输出符号(正号或负号)。
空格                   输出值为正时冠以空格,为负时冠以负号。
#             对c,s,d,u类无影响;对o类,在输出时加前缀0;对x类, 在输出时加前缀0x或者0X;对g,G 类防止尾随0被删除;对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符。
 0                     对于所有的数字格式,用前导0填充字段宽度,若出现-标志或者指定了精度(对于整数),忽略。

 3.输出最小宽度
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
 
 4.精度
精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

 5.长度
长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
     h和整数转换说明符一起使用,表示一个short  int 或者unsigned short int 类型的数值 ,示例:

%hu,%hx,%6.4hd
    hh和整数转换说明符一起使用,表示一个short  int 或者unsigned short类型的数值 ,示例:

%hhu,%hhx,%6.4hhd
    j和整数转换说明符一起使用,表示一个intmax_t或者uintmax_t类型的数值 ,示例:

%jd,%8jx
    l和整数转换说明符一起使用,表示一个long int 或者unsigned long int类型的数值 ,示例:

%ld,%8lu
    ll和整数转换说明符一起使用,表示一个long int 或者unsigned long int类型的数值 (C99),示例:

%lld,%8llu
    L和浮点转换说明符一起使用,表示一个long double的值,示例:%Lf,%10.4Le
    t和整数转换说明符一起使用,表示一个ptrdiff_t值(两个指针之间的差相对应的类型)(C99),示例:

%td,%12ti
    z和整数转换说明符一起使用,表示一个size_t值(sizeof返回的类型)(C99),示例:%zd,%12zx
使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。

(0)

相关推荐

  • c语言printf实现同一位置打印输出的实例

    控制台同一位置打印输出,例如:进度1%->100%在同一位置显示.刚学习c语言的时候一直想做起来,可惜查询好多资料不行.时隔6年多,空闲之余又想起这个问题,便决定一试,虽然c语言已经几乎忘光了,呵呵.最终还是搞定了,这次运气不错,哈哈! ^_^ #include <stdio.h> #include <pthread.h> //#include <sys/time.h> //linux for sleep(seconds) and usleep(Microseco

  • 基于C语言sprintf函数的深入理解

    printf 可能是许多程序员在开始学习C语言时接触到的 第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类 型的数据构造成字符串时,sprintf的强大功能很少会让你失望.由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出.这也导致sprintf比printf有用得多.所以本文着重介绍sprintf,有时也穿插着用用 pritnf.

  • 详解C语言中printf输出的相关函数

    C语言printf()函数:格式化输出函数 printf()函数是最常用的格式化输出函数,其原型为: int printf( char * format, ... ); printf()会根据参数 format 字符串来转换并格式化数据,然后将结果输出到标准输出设备(显示器),直到出现字符串结束('\0')为止. 参数 format 字符串可包含下列三种字符类型: 一般文本,将会直接输出 ASCII 控制字符,如\t.\n 等有特定含义 格式转换字符 格式转换为一个百分比符号(%)及其后的格式字

  • C语言中printf()缓冲问题详解

    前言 缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区. 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度. 又比如,

  • c语言printf函数的使用详解

    printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左对齐输出,如省略表示右对齐输出.③0:有0表示指定空位填0,如省略表示指定空位不填.④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数.N指精度.用于说明输出的实型数的小数位数.为指定n时,隐含的精度为n=6位.⑤l或h:l对整型指long型,对实型指double型.h用于将整型的格式字符修正为short型. ----------

  • 浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别

    printf语法: #include <stdio.h>int printf( const char *format, ... ); printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.返回值是输出的字符数量.sprintf语法: #include <stdio.h>int sprintf( char *buffer, const char *format, ... );sprintf()函数和printf()类似,格式控制完全一样

  • C语言printf详细解析

     1.类型: 表示输出类型的格式字符 格式字符意义 a                                            浮点数.十六进制数字和p-计数法(C99 A                                            浮点数.十六进制数字和p-计数法(C99)c 输出单个字符d 以十进制形式输出带符号整数(正数不输出符号)e 以指数形式输出单.双精度实数E 以指数形式输出单.双精度实数f   以小数形式输出单.双精度实数 g 以%f%e中较

  • C语言数据结构详细解析二叉树的操作

    目录 二叉树分类 二叉树性质 性质的使用 二叉树的遍历 前序遍历 中序遍历 后序遍历 层序遍历 求二叉树的节点数 求二叉树叶子结点个数 求二叉树的最大深度 二叉树的销毁 二叉树分类 满二叉树 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树.也可以理解为每一层的结点数都达到最大值的二叉树. 完全二叉树 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下.从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为

  • c语言 数据存储与原码 反码 补码详细解析

    目录 前言 1.数据的类型介绍 1.1整形家族 2.整形在数据内存中的存储 2.1 原码 反码和补码(三种整型数的表示方法) 2.2大小端字节序序的介绍 2.3 练习 3.浮点型在内存中的存储 3.1 先举一个例子 3.2 浮点数储存的规则 前言 学习本章你会了解: 1.数据类型详细介绍 2.整形在内存中的存储:以及了解原码.补码.反码 3.大小端字节序的介绍和判断 4.浮点型在内存中的存储解析 1.数据的类型介绍 在学习数据储存之前,让我们先认识一下数据类型.以下这些数据类型是我们初学c语言时

  • Go语言单元测试超详细解析

    目录 一.单元测试分类及其概念 1.基本分类 2.细说单元测试分类 二.结合代码细说每一种测试 1.基准测试 2.组测试与子测试 三.pprof调试工具 1.对主函数进行传参 2.pprof性能调优 前言: 平时根据需求写代码.人工进行测试往往不会面面俱到,还会因为需求的改变繁琐的进行测试通过完成一个测试函数,可以大大简化测试的步骤,并且在需求该变的时候只需要改变一下测试的输入与期望 一.单元测试分类及其概念 1.基本分类 测试函数 函数前缀为Test 主要用于测试程序的一些逻辑行为是否正确 基

  • C语言 详细解析时间复杂度与空间复杂度

    目录 一.概念 1.1.算法效率 1.2.时间复杂度 1.3.空间复杂度 二.计算 2.1.大O的渐进表示法 2.2.时间复杂度计算 2.3.空间复杂度计算 三.有复杂度要求的习题 一.概念 1.1.算法效率 如何衡量一个算法的好坏?比如对于以下斐波那契数列: long long Fib(int N) { if (N < 3) return 1; return Fib(N - 1) + Fib(N - 2); } 斐波那契数列用递归实现方式非常简洁,但简洁一定好吗?那该如何衡量其好与坏呢?在学完

  • C语言详细解析有符号数与无符号数的表示

    目录 一.计算机中的符号位 二.有符号数的表示法 三.无符号数的表示法 四.signed 和 unsigned 五.小结 一.计算机中的符号位 数据类型的最高位用于标识数据的符号 最高位为1,表明这个数为负数 最高位为0,表明这个数为正数 下面看一段代码,用于判断数据的符号: #include <stdio.h> int main() { char c = -5; short s = 6; int i = -7; printf("%d\n", ( (c & 0x80

  • Go语言实现JSON解析的方法详解

    目录 1.json序列化 2.Json反序列化为结构体对象 3.Json反序列化为map类型 4.Tag的使用 在日常项目中,使用Json格式进行数据封装是比较常见的操作,看一下golang怎么实现. 1.json序列化 将json字符串转为go语言结构体对象. package main import ( "encoding/json" "errors" "fmt" ) var parseJsonError = errors.New("

  • C语言 文件操作解析详解及实例代码

    C语言文件操作解析 在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作.下面介绍一下这些操作中涉及到的函数. 一.移动位置指针的函数 rewind函数和fseek函数,这两个函数的原型是: void rewind(FILE *fp);     将位置指针移动到文件首 int fseek(FILE *fp,long int offset,int origin);   将位置指针移动到距离origin的offset字节数的位置 其中对于fseek函数中的参数,origin为起始点,offs

  • log4j使用详细解析

    简单的说log4j就是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地.日志信息的输出格式 Log4j 除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息. 程序员经常会遇到脱离Java ide环境调试程序的情况,这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试.这样会带来一个非常麻烦的问题:一旦哪天程序员决定不要显示这些System.out.println的东西了就只

  • c语言实现基数排序解析及代码示例

    1. 基数排序(radixsort)属于"分配式排序"(distributionsort),又称"桶子法"(bucketsort)或binsort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些"桶"中,藉以达到排序的作用. 2.基数排序的实现方法分为两种: 最高位优先(MostSignificantDigitfirst)法,简称MSD法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码

随机推荐