`

【C/C++和指针】printf 的那些事

 
阅读更多

一,printf

1)作用:产生格式化输出的函数(定义在 stdio.h 中)。

2)用法:int printf(const char *format,[argument]);

format 参数输出的格式,定义格式为:%[flags] [width] [.perc] [F|N|h|l] type  

 规定数据输出方式,具体如下:

   1.type 含义如下:

   d 有符号10进制整数

   i 有符号10进制整数

   o 无符号8进制整数

   u 无符号10进制整数

  x 无符号的16进制数字,并以小写abcdef表示

   X 无符号的16进制数字,并以大写ABCDEF表示

   f 浮点数

   E/e 用科学表示格式的浮点数

   g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数

   c 单个字符

   s 字符串

   S wchar_t字符(宽字符)类型字符串

   % 显示百分号本身

   p 显示一个指针,near指针表示为:XXXX

   far 指针表示为:XXXX:YYYY

   n 相连参量应是一个指针,其中存放已写字符的个数

  2.flags 规定输出格式,取值和含义如下:

   无 右对齐,左边填充0和空格

   - 左对齐,右边填充空格

   + 在数字前增加符号 + 或 -

   0 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-)

   空格 输出值为正时冠以空格,为负时冠以负号

   # 当type=c,s,d,i,u时没有影响

   type=o,x,X时,分别在数值前增加'0',"0x","0X"

   type=e,E,f时,总是使用小数点

   type=g,G时,除了数值为0外总是显示小数点

  3.width 用于控制显示数值的宽度,取值和含义如下

   n(n=1,2,3...) 宽度至少为n位,不够以空格填充

   0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充

   * 格式列表中,下一个参数还是width

  4.prec 用于控制小数点后面的位数,取值和含义如下:

   无 按缺省精度显示

   0 当type=d,i,o,u,x时,没有影响

   type=e,E,f时,不显示小数点

   n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数

   type=其他,表示显示的最大宽度

   .* 格式列表中,下一个参数还是width

  5.F|N|h|l 表示指针是否是远指针或整数是否是长整数

   F 远指针

   n 近指针

   h 短整数或单精度浮点数

   l 长整数或双精度浮点数

3)函数返回值:  

  printf函数类型为整型,其返回值是整型值。

  其值实际为printf控制输出的字符数。

  printf()函数实际上是将所有参数按字符输出,根据该函数的参数1(const char *format),我们不难理解。

  例如:

  int a,b;

  a=printf("gelin\n"); //a的值为6,

  b=printf("the value of printf is:%d",a); //b的值为24

4)特别注意

printf 从右向左执行!!!

5)示例

1> printf("%10.5f\n",5.2); // 右对齐位宽 10个字符,小数点后5位


2>printf("%f",3); // 整型3不会被隐式类型转换为浮点型,而是被直接按内存内容当作浮点型

内部使用等价于
int i = 3;
printf("%f", *(float*)&i)

对于%f默认为double浮点型(64位,默认的显示精度是小数点后6位)则3实际的值接近于0


根据IEEE 754标准对64位浮点数采用的表示为:
数符(1位)| 阶码 (11位) | 尾数 (52位)
内存中整数3就是 00000000 00000000 00000000 00000011 +32位随机值

所以输出值为:0.000000

3>printf("%d",5.01); // 输出一个大数

按int类型寻址4个字节,会产生大整数


分享到:
评论

相关推荐

    C/C++ 函数指针教程

    总结来说,函数指针及其相关概念如回调函数和Functors是C/C++编程中的重要工具,掌握这些技术对于编写高效、灵活和可扩展的程序至关重要。通过本文的介绍,希望能帮助读者更好地理解和运用这些高级特性。

    C/C++中文函数手册

    《C/C++中文函数手册》是一份非常实用的编程资源,专为C和C++开发者设计,提供了详尽的函数库信息和速查指南。这份手册涵盖了C语言库函数和C++ API,对于初学者和有经验的程序员来说都是一个宝贵的参考资料。 C语言...

    C/C++指针详细讲解

    在开始讲解C/C++指针之前,首先要理解变量在内存中的存储实质。在计算机系统中,内存空间类似于一个存放数据的场所,每个内存位置都有一个唯一的地址,就像电影院座位的编号一样,方便我们找到并存取数据。在C或C++...

    C/C++指针学习的绝好例子

    ### C/C++指针学习的绝好例子 在学习C/C++编程时,掌握指针是非常重要的一步。本文将通过两个具体的示例来帮助大家理解指针的基本概念及其使用方法。 #### 示例一:交换两个变量的值 ##### 代码解析 ```c #...

    c/c++头文件和文件指针

    在C/C++编程中,头文件和文件指针是两个非常关键的概念,它们在处理输入输出操作时起着至关重要的作用。本文将深入探讨这两个概念,以及如何在处理文本文件时克服换行问题。 首先,让我们来理解什么是头文件。在C/...

    有关C/C++的函数指针概念课件仅供学习使用

    在学习C/C++编程语言的过程中,函数指针是高级编程技巧之一,它允许将函数作为参数传递给其他函数,或者在运行时动态决定调用哪个函数。函数指针本身是指向函数入口地址的指针,每个函数都有一个入口地址,这个地址...

    C/C++ 参考手册

    总之,《C/C++参考手册》是学习和开发C/C++项目的重要参考资料,尤其是对于那些需要快速查找库函数和STL使用方法的开发者。尽管它不包括所有C++的特性,但对于日常开发来说已经足够丰富。对于想要深入了解STL算法的...

    C/C++语言初学者FAQ

    - 掌握指针的概念,它是C/C++中的重要特性,理解和熟练使用指针是进阶的关键。 - 学习C++的面向对象特性,理解类、对象、封装、继承和多态。 3. **编译器与IDE** - **GCC/G++**:开源的编译器,支持C和C++语言。...

    c/c++ 指针的一些用法

    本文将详细介绍C/C++指针的基本概念、类型、运算以及其在数组遍历中的应用。 首先,理解指针的基础知识至关重要。指针是一个变量,它的值是一个内存地址,这个地址对应于程序中其他变量的存储位置。对于指针,我们...

    用汇编的眼光看C/C++之深入指针

    掌握指针的基本概念对于理解和编写高效的C/C++程序至关重要。 #### 普通数据类型指针 **普通数据类型指针**是指向特定大小内存空间的指针,这些空间用于存储基本数据类型如整数、字符或浮点数。例如,在C/C++中,`...

    最全C/C++笔试面试题(包括各大公司笔试面试题)

    通过对这部分内容的学习和掌握,可以帮助学习者更好地理解C/C++语言的基础知识和应用。 1. 双向链表的实现 在C语言中,双向链表是一种常见的数据结构,它可以实现节点的插入、删除和遍历等操作。在本资源中,我们...

    c/c++Reference

    C/C++ Reference 涵盖了这两个编程语言的基础与高级概念,特别强调了标准C库和C++的Standard Template Library (STL)。C++是建立在C语言基础之上的面向对象编程语言,它增加了类、模板、异常处理等特性,使得代码更...

    c/c++帮助文档

    本文将深入探讨标题为“c/c++帮助文档”的资源,包括其中包含的"Linux C函数参考手册.chm"和"C++帮助文档CLib.chm"两个文件,旨在为C/C++开发者提供详尽的知识点解析。 首先,让我们关注"Linux C函数参考手册.chm...

    C/C++库函数以及文件大全(经典)

    在C/C++编程中,库函数和标准模板库(Standard Template Library, STL)是开发者不可或缺的工具。这些库提供了丰富的功能,使得程序员可以更高效、更便捷地编写代码。本资源"库函数以及文件大全(经典).chm"很可能...

    c ,c++指针经验谈

    在编程世界中,C 和 C++ 语言中的指针是一个非常关键的概念,它们赋予了程序员直接操作内存的能力,使得程序可以高效地运行。指针是理解这两种语言底层工作原理的关键,同时也是许多高级技术如动态内存分配、数据...

    c/c++标准库函数

    C++标准库还在C的基础上增加了STL(Standard Template Library),这是一个强大的工具集,包含模板类和函数,用于高效地实现数据结构和算法。 在C语言中,标准库主要由ISO C99定义,它包含了多个头文件,如(I/O...

    C/C++程式語言講義

    以上总结了C/C++编程语言的一些基础知识点,包括变量的定义和使用、数据类型、指针的概念及其操作、数组的声明和使用以及基本的运算符。这些内容是学习C/C++编程的基础,对于初学者来说非常重要。希望这些知识点能够...

    C/C++ 语言参考手册 CHM

    《C/C++ 语言参考手册》是一份全面且详尽的编程资源,旨在为开发者提供C和C++语言的关键信息。这份手册以CHM(Compiled Help Manual)格式呈现,是一种常见的电子文档形式,通常用于技术文档,便于快速查找和浏览。 ...

    C/C++库函数api手册

    C/C++库函数API手册是程序员们不可或缺的参考资料,它涵盖了C和C++语言中大量常用的库函数。这些函数在程序开发中起着至关重要的作用,帮助开发者实现各种功能,如输入输出、字符串处理、内存管理、数学计算等。下面...

    C/C++指针与教程

    CHM格式,直接下载即可用,比较小不错的参考,自己整理...1、C指针精华文章 2、键盘扫描码以及整数型对照表 3、C/C++语言编程规范 4、谭版C教程 5、ASCII码表及其它常用表对照 6、C最常用函数释疑,含scanf()、printf()

Global site tag (gtag.js) - Google Analytics