计算机c语言,怎么实现c语言浮点数转换整数进一,是这样的,看例子,如2*0.7*0.8=1.2(实际它是等于1.

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
C语言讲义v1.0.doc87页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:100 &&
C语言讲义v1.0.doc
你可能关注的文档:
··········
··········
1 愉快的开始-hello world 14
1.1 include头文件包含 14
1.2 main函数 14
1.3 注释 14
括号,程序题和代码块 14
1.5 声明 14
1.6 C语言自定义名字的要求 15
1.7 printf函数 15
1.8 return语句 15
1.9 System系统调用 15
1.9.1 System返回值在windows和unix下的不同, 15
1.9.2 POSIX 15
1.10 C语言编译过程,gcc参数简介 16
1.10.1 C语言编译过程 16
1.10.2 -E预编译 16
1.10.3 -S汇编 16
1.10.4 -c编译 16
1.10.5 链接 16
1.11 操作系统结构 17
1.11.1 用户模式 17
1.11.2 内核模式 17
1.12 64位,32位系统区别 18
1.12.1 CPU内部结构与寄存器 18
1.12.2 RISC与CISC CPU构架 18
1.12.3 SPARC,x86与ARM 18
1.13 汇编语言 18
1.13.1 I386汇编简介 18
1.13.2 VS反汇编 19
1.14 IDE工具 19
1.14.1 QT常用快捷键 19
1.14.2 VS常用快捷键 19
1.14.3 VS断点,调试 19
2 C语言中的数据类型 19
2.1 常量 19
2.1.1 #define 19
2.1.2 const 19
2.2 字符串常量 20
2.3 二进制数、位、字节与字 20
2.4 八进制 20
2.5 十六进制 20
2.6 原码 21
2.7 反码 21
2.8 补码 21
2.9 sizeof关键字 22
2.10 int类型 22
2.10.1 int常量,变量 22
2.10.2 printf输出int值 23
2.10.3 printf输出八进制和十六进制 23
2.10.4 short,long,long long,unsigned int 23
2.10.5 整数溢出 23
2.10.6 大端对齐与小端对齐 23
2.11 char类型 24
2.11.1 char常量,变量 24
2.11.2 printf输出char 24
2.11.3 不可打印char转义符 24
2.11.4 char和unsigned char 25
2.12 浮点float,double,long double类型 25
2.12.1 浮点常量,变量 25
2.12.2 printf输出浮点数 25
2.13 类型限定 25
2.13.1 const 25
2.13.2 volatile 26
2.13.3 register 26
3 字符串格式化输出和输入 26
3.1 字符串在计算机内部的存储方式 26
3.2 printf函数,putchar函数 27
3.3 scanf函数与getchar函数 28
4 运算符表达式和语句 29
4.1 基本运算符 29
4.1.2 + 29
正在加载中,请稍后...浮点数的二进制表示 - 阮一峰的网络日志
浮点数的二进制表示
前几天,我在读一本C语言教材,有一道例题:
  #include &stdio.h&
  void main(void){
    int num=9; /* num是整型变量,设为9 */
    float* pFloat=& /* pFloat表示num的内存地址,但是设为浮点数 */
    printf("num的值为:%d\n",num); /* 显示num的整型值 */
    printf("*pFloat的值为:%f\n",*pFloat); /* 显示num的浮点值 */
    *pFloat=9.0; /* 将num的值改为浮点数 */
    printf("num的值为:%d\n",num); /* 显示num的整型值 */
    printf("*pFloat的值为:%f\n",*pFloat); /* 显示num的浮点值 */
运行结果如下:
  num的值为:9
  *pFloat的值为:0.000000
  num的值为:
  *pFloat的值为:9.000000
我很惊讶,num和*pFloat在内存中明明是同一个数,为什么浮点数和整数的解读结果会差别这么大?
要理解这个结果,一定要搞懂浮点数在计算机内部的表示方法。我读了一些资料,下面就是我的笔记。
在讨论浮点数之前,先看一下整数在计算机内部是怎样表示的。
  int num=9;
上面这条命令,声明了一个整数变量,类型为int,值为9(二进制写法为1001)。普通的32位计算机,用4个字节表示int变量,所以9就被保存为00 ,写成16进制就是0x。
那么,我们的问题就简化成:为什么0x还原成浮点数,就成了0.000000?
根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式:
  (1)(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。
  (2)M表示有效数字,大于等于1,小于2。
  (3)2^E表示指数位。
举例来说,十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的格式,可以得出s=0,M=1.01,E=2。
十进制的-5.0,写成二进制是-101.0,相当于-1.01×2^2。那么,s=1,M=1.01,E=2。
IEEE 754规定,对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。
对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。
IEEE 754对有效数字M和指数E,还有一些特别规定。
前面说过,1≤M<2,也就是说,M可以写成1.xxxxxx的形式,其中xxxxxx表示小数部分。IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。
至于指数E,情况就比较复杂。
首先,E为一个无符号整数(unsigned int)。这意味着,如果E为8位,它的取值范围为0~255;如果E为11位,它的取值范围为0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,E的真实值必须再减去一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。
比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即。
然后,指数E还可以再分成三种情况:
(1)E不全为0或不全为1。这时,浮点数就采用上面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。
(2)E全为0。这时,浮点数的指数E等于1-127(或者1-1023),有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。
(3)E全为1。这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);如果有效数字M不全为0,表示这个数不是一个数(NaN)。
好了,关于浮点数的表示规则,就说到这里。
下面,让我们回到一开始的问题:为什么0x还原成浮点数,就成了0.000000?
首先,将0x拆分,得到第一位符号位s=0,后面8位的指数E=,最后23位的有效数字M=000 00 。
由于指数E全为0,所以符合上一节的第二种情况。因此,浮点数V就写成:
  V=(-1)^0×0.×2^(-126)=1.001×2^(-146)
显然,V是一个很小的接近于0的正数,所以用十进制小数表示就是0.000000。
再看例题的第二部分。
请问浮点数9.0,如何用二进制表示?还原成十进制又是多少?
首先,浮点数9.0等于二进制的1001.0,即1.001×2^3。
那么,第一位的符号位s=0,有效数字M等于001后面再加20个0,凑满23位,指数E等于3+127=130,即。
所以,写成二进制形式,应该是s+E+M,即0
00 。这个32位的二进制数,还原成十进制,正是。
学习 Linux 时,经常可以看到两个词:User space(用户空间)和 Kernel space(内核空间)。
计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。
布尔代数是计算机的基础。没有它,就不会有计算机。
DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。403 Forbidden
403 Forbidden博客访问: 86446
博文数量: 54
博客积分: 1679
博客等级: 上尉
技术积分: 760
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++
《C语言教程(原书第4版)》前言《C语言教程(原书第4版)》(《A Book on C: Programming in C (Fourth Edition)》详细介绍了C这种通用的编程语言,既显示了C“简单即是美”的优雅特性,又展现了它“深入底层”的强大功能。本书通过详细探讨许多来自应用领域的交互式运行程序,深入描述了ANSI版本的C语言。本书一步一步地对C语言进行了完整的描述;另外,还提供了许多完整的工作程序。在适当的时候,我们会讨论传统C和ANSI C的不同之处(传统C仍然被广泛使用)。本书通过大量的例子,对每个重要的语言特性进行阐述。此外,还以表格形式对C的关键信息进行总结,便于读者以后参考。每一章在结束的时候都有总结和练习部分。总结部分对该章所讨论的一些关键概念进行概括,而练习部分则是对正文的论证和延伸。本书从通用编程语言的角度对C语言进行描述。它可以作为读者学习编程语言的入门课程;也可以作为进一步学习C语言的高级课程;还可以与比较式编程语言、计算语言学、数据结构、数据库系统、分形几何、图形学、数值分析、操作系统、编程方法学以及科学应用程序等课程一起学习。C适用于编写上述领域的应用程序,本书解释了编写这些应用程序所需要的所有特性。本书也可以作为数据结构课程的教材,因为它讨论了枚举类型、联合、自引用等结构以及不规则数组等高级数据结构特性。作为与UNIX或Windows 95/NT相关的操作系统课程,本书探讨了有关文件结构和系统函数的一些知识,使程序员能对原有的系统函数库进行添加,并理解与操作系统相关的底层C代码。对于应用程序和科学应用编程,本书介绍了如何编写示例函数库。本书所提供的工作代码还涉及统计、求方程式的根、排序、文本操纵、文件处理和游戏等内容。新增的Java内容在第14章中,我们讨论了C程序员可以很自然和很方便地用Java进行编程的原因。Java是一种适合在Internet上运行的语言,它借鉴了C和C++的许多思想,并按照一种独立于机器和系统的方式运行。这使它特别适合在Internet上运行,例如编写由浏览器所使用的在Web页面上运行的Applet。由于Java是对C和C++的扩展,因此C程序员很乐意学习Java语言。完整的ANSI C语言计算机专业人员可以在本书中找到C语言的所有主题,包括枚举类型、列表处理和操作系统接口。第1章对这门语言进行了总览性描述。在阅读了这一章之后,有编程基础的读者就可以编写C代码了。由于本书各章的内容相对独立,因此编程基础较扎实的读者可以根据需要阅读特定的章节。第11章详细讨论了C语言与操作系统的连接,这些内容可以帮助系统程序员在MS-DOS和UNIX下用C进行编程。交互性环境本书充分利用了现代计算机的交互性环境。我们在本书中始终鼓励读者进行试验。键盘和屏幕是常规的输入/输出设备,但本书也对其他的输入输出途径进行了解释。因此,本书既适用于小型的家用和商用计算机用户,也适用于大型交互性系统的用户。我们假定读者可以使用交互性的ANSI C系统。在编写本书期间,我们使用了一些不同的C系统:在IBM兼容的奔腾机器上运行的各种Borland和Microsoft编译器,GNU的gcc编译器,运行于DEC、SGI、Sun等工作站的本地编译器以及运行于San Diego的Cray大型机上的C编译器。工作代码我们通过示例程序、解释和语法来描述C语言。本书使用了大量的工作代码,通过许多小而有用的例子对一些重要的概念进行描述。之所以使用小型代码,是为了更容易让读者理解。之所以说这些小例子非常有用,是因为总是可以将程序分解为层次式的基本构件。本书所描述的程序和函数可以在实际的系统中使用。作者所信奉的哲学是读者应该不断进行试验,并从中享受乐趣。分析本书采用“分析”段落,对所提供的许多程序和函数进行详细的分析。这种分析方法是作者最初于1984年创造的,这是一种独一无二的教学方法,用于说明工作代码的一些关键特性。这种分析方法类似于对代码进行结构化的走查,目的是向读者解释新接触的编程元素以及工作代码中所出现的惯用法。灵活的组织本书的组织形式非常灵活。第1章分为两个部分:第一部分解释了实现交互性输入/输出所需要的关键编程技巧,这些内容是必须理解的;第1章的第二部分是对整个语言的总览性介绍。对于那些已经熟悉其他类似编程语言的读者,在阅读了这些内容之后,很容易了解C语言的概貌。对于初学编程的读者,第二部分可以推迟阅读。警告:初学者应该推迟第1章第二部分的学习。第2章在词法层次上对C语法进行描述,讨论了C的语法规则。该章选择性地使用了一些语法规则来显示C语言的结构。对于第2章所描述的Backus-Naur-Form(BNF巴克斯-诺尔形式)记法,读者可以选择完全将其略过,这并不会对学习的连续性造成任何影响。本书使用了BNF风格的语法描述,使读者可以了解标准的编程语言描述形式。另外,本书通过示例程序和解释对语言的成分进行详细的描述。参考作用本书可以作为C语言的参考手册。本书提供了许多表格,简洁地总结了C语言的一些关键概念。附录A描述了完整的ANSI C标准函数库以及相关的头文件。附录A的内容是根据标准头文件组织的,例如ctype.h、stdio.h和string.h等。在适当的时候,我们会提供示例代码说明某个特定结构或特定函数的用法。在附录B中,我们提供了C语言的完整语法。在附录C中,我们讨论了ANSI C和传统C的一些主要区别。完整的语法特性第3章到第10章对C语言的各个特性进行了完整的介绍。其中包括了许多高级话题,读者在第一遍阅读时可以将它们省略,这样并不会对接下来的学习产生影响。例如,读者在第一遍阅读本书时可以忽略枚举类型的介绍。本书强调了像字长和浮点表示形式等依赖于机器的特性,但初学者可以忽略这些细节。预处理器第8章完整地讲述了预处理器,它用于对C语言的功能和概念进行扩展。宏可以用于生成内联代码,可以代替函数调用。使用宏可以减少程序的执行时间。该章对预处理器进行了详细的描述,包括ANSI C委员会所增加的一些新特性。在传统C中,预处理器在不同的编译器中可能具有显著的差别。在ANSI C中,预处理器的功能完全是预先指定的。 递归和列表处理第5章对递归进行了详细讨论。递归这个概念对于初学者而言常常显得颇为神秘。第8章在讨论快速排序算法时以及第10章在讨论基本的列表处理技巧时再次说明了递归的用法。要完整地理解列表处理技巧,读者需要学习高级编程和数据结构课程。与操作系统连接第11章讨论了C语言和操作系统的连接。在该章中,我们解释了如何进行文件处理,并详细介绍了标准函数库中的各个输入/输出函数。我们还解释了如何在C程序中执行系统命令,如何设置文件访问权限以及如何使用环境变量。我们提供了一些例子,说明了性能评估程序、函数库管理工具以及make工具的用法。高级应用在第12章中,我们讨论了C语言的一些高级应用。我们讨论了诸如并发进程的创建、叠加进程、进程间通信以及信号等话题,并提供了一些工作代码。另外,我们还讨论了向量和矩阵的动态内存分配,这些知识工程师和科学家会用到。读者可以根据需要选择性地使用这些高级技巧,它们可以作为高级编程实践的基础。本书也可以作为以C为实现语言的高级计算机科学课程的辅导书。表格、总结和练习在本书中,我们用许多表格对C语言的一些关键概念进行总结。这些表格可以帮助读者加深对C语言的理解。例如,C具有大量的操作符,并且几乎允许操作符进行各种类型的混合使用。理解这些操作符的优先级和结合性是非常重要的,它有助于理解各种混合表达式的求值顺序。本书中的很多表格就是对各种混合表达式的求值顺序进行分析。作为参考手册,这些表格和代码很容易寻找。练习部分是对语言的基本元素进行测试,并讨论了一些高级的以及因系统而异的特性。许多练习的目的是为了解决问题,还有些练习则是测试读者对C的语法或语义的理解。有些练习所讨论的主题是对正文的补充,有些读者可能会对它们产生兴趣。本书的练习提供了难易程度各异的问题,适合各个层次的读者。样张试读:从零开始-----------------------------------------目录:第0章&& 从零开始&&& 10.1&& 为什么要用C&&& 10.2&& ANSI C标准&&& &&& 20.3&& 从C到C++&&& 30.4&& 从C和C++到Java&&& 3第1章&& C语言概述&&& 41.1&& 编程和预备知识&&& 41.2&& 程序输出&&& 41.3&& 变量、表达式和赋值&&& 71.4&& 使用#define和#include&&& 91.5&& 使用printf()和scanf()&&& 121.6&& 控制流&&& 141.7&&& 函数&&& 191.8&& 数组、字符串和指针&&& 241.8.1&& 数组&&& 241.8.2&& 字符串&&& 251.8.3&& 指针&&& 281.9&& 文件&&& 311.10&& 与操作系统有关的内容&&& 351.10.1&& 编写和运行C程序&&& 351.10.2&& 中断程序&&& 361.10.3&& 输入文件尾标志&&& 371.10.4&& 输入和输出的重定向&&& 371.11&& 总结&&& 381.12&& 练习&&& 39第2章&& 词法元素、操作符和C系统&&& 452.1&& 字符和词法元素&&& 462.2&& 语法规则&&& 482.3&& 注释&&& 492.4&& 关键字&&& 502.5&& 标识符&&& 502.6&& 常量&&& 512.7&& 字符串常量&&& 522.8&& 操作符和标点符号&&& 532.9&& 操作符的优先级和结合性&&& 532.10&& 增值操作符和减值操作符&&& 552.11&& 赋值操作符&&& 562.12&& 例子:计算2的乘方&&& 572.13&& C系统&&& 582.13.1&& 预处理器&&& 592.13.2&& 标准函数库&&& 592.14&& 总结&&& 622.15&& 练习&&& 63第3章&& 基本数据类型&&& 693.1&& 声明、表达式和赋值&&& 693.2&& 基本数据类型&&& 713.3&& 字符和char数据类型&&& 723.4&& int数据类型&&& 753.5&& 整数类型short、long和unsigned&&& 763.6&& 浮点类型&&& 773.7&& typedef的用法&&& 793.8&& sizeof操作符&&& 793.9&& 使用getchar()和putchar()&&& 803.10&& 数学函数&&& 823.10.1&& 使用abs()和fabs()&&& 843.10.2&& UNIX和数学函数库&&& 843.11&& 隐式类型转换和强制类型转换&&& 843.11.1&& 整型提升&&& 853.11.2&& 寻常算术转换&&& 853.11.3&& 强制类型转换&&& 863.12&& 十六进制和八进制常量&&& 873.13&& 总结&&& 893.14&& 练习&&& 89第4章&& 控制流&&& 964.1&& 关系操作符、相等操作符和逻辑操作符&&& 964.2&& 关系操作符和表达式&&& 974.3&& 相等操作符和表达式&&& 994.4&& 逻辑操作符和表达式&&& 1004.5&& 复合语句&&& 1034.6&& 表达式和空语句&&& 1034.7&& if和if-else语句&&& 1044.8&& while语句&&& 1064.9&& for语句&&& 1084.10&& 例子:布尔变量&&& 1104.11&& 逗号操作符&&& 1114.12&& do语句&&& 1124.13&& 例子:斐波那契数&&& 1134.14&& goto语句&&& 1154.15&& break和continue语句&&& 1164.16&& switch语句&&& 1174.17&& 条件操作符&&& 1184.18&& 总结&&& 1194.19&& 练习&&& 120第5章&& 函数&&& 1285.1&& 函数定义&&& 1285.2&& return语句&&& 1305.3&& 函数原型&&& 1315.4&& 例子:创建乘方表&&& 1325.5&& 从编译器的角度观察函数原型&&& 1335.6&& 函数定义顺序的另一种风格&&& 1345.7&& 函数调用和传值调用&&& 1345.8&& 开发大型程序&&& 1365.9&& 使用断言&&& 1385.10&& 作用域规则&&& 1395.10.1&& 平行和嵌套代码块&&& 1405.10.2&& 以调试为目的使用代码块&&& 1405.11&& 存储类型&&& 1415.11.1&& auto存储类型&&& 1415.11.2&& extern存储类型&&& 1415.11.3&& register存储类型&&& 1435.11.4&& static存储类型&&& 1435.12&& 静态外部变量&&& 1445.13&& 默认初始化&&& 1455.14&& 递归&&& 1455.15&& 例子:汉诺塔&&& 1495.16&& 总结&&& 1525.17&& 练习&&& 153第6章&& 数组、指针和字符串&&& 1596.1&& 一维数组&&& 1596.1.1&& 初始化&&& 1606.1.2&& 下标&&& 1606.2&& 指针&&& 1616.3&& 传引用调用&&& 1646.4&& 数组和指针之间的关系&&& 1656.5&& 指针运算和元素的大小&&& 1666.6&& 数组作为函数的实参&&& 1666.7&& 例子:冒泡排序&&& 1676.8&& 用calloc()和malloc()进行动态内存分配&&& 1686.9&& 例子:归并和归并排序&&& 1716.10&& 字符串&&& 1756.11&& 标准函数库中的字符串处理函数&&& 1776.12&& 多维数组&&& 1806.12.1&& 二维数组&&& 1806.12.2&& 存储映射函数&&& 1806.12.3&& 形式参数声明&&& 1816.12.4&& 三维数组&&& 1826.12.5&& 初始化&&& 1826.12.6&& 使用typedef&&& 1836.13&& 指针数组&&& 1846.14&& main()函数的参数&&& 1886.15&& 不规则数组&&& 1896.16&& 函数作为参数&&& 1906.17&& 例子:使用二分法寻找函数的根&&& 1926.18&& 函数指针数组&&& 1966.19&& 类型限定符const和volatile&&& 1996.20&& 总结&&& 2006.21&& 练习&&& 202第7章&& 位操作符和枚举类型&&& 2147.1&& 位操作符和表达式&&& 2147.1.1&& 按位求反&&& 2157.1.2&& 补码&&& 2157.1.3&& 位逻辑操作符&&& 2167.1.4&& 左移位和右移位操作符&&& 2177.2&& 掩码&&& 2187.3&& 软件工具:打印int值的二进制形式&&& 2197.4&& 包装和解包&&& 2207.5&& 枚举类型&&& 2237.6&& 例子:“石头、剪刀、布”游戏&&& 2257.7&& 总结&&& 2297.8&& 练习&&& 230第8章&& 预处理器&&& 2358.1&& #include的使用&&& 2358.2&& 使用#define&&& 2368.3&& 带参数的宏&&& 2378.4&& stddef.h中的类型定义和宏&&& 2398.5&& 例子:用qsort()进行排序&&& 2398.6&& 例子:带参数的宏&&& 2438.7&& stdio.h和ctype.h中的宏&&& 2468.8&& 条件编译&&& 2478.9&& 预定义的宏&&& 2498.10&& “#”和“##”操作符&&& 2498.11&& assert()宏&&& 2508.12&& 使用#error和#pragma&&& 2508.13&& 行号&&& 2518.14&& 对应的函数&&& 2518.15&& 例子:快速排序&&& 2518.16&& 总结&&& 2548.17&& 练习&&& 254第9章&& 结构和联合&&& 2629.1&& 结构&&& 2629.2&& 访问结构成员&&& 2649.3&& 操作符的优先级和结合性的总结&&& 2679.4&& 在函数中使用结构&&& 2689.5&& 结构的初始化&&& 2699.6&& 例子:玩扑克牌&&& 2699.7&& 联合&&& 2739.8&& 位字段&&& 2759.9&& 例子:访问位和字节&&& 2769.10&& ADT堆栈&&& 2779.11&& 总结&&& 2809.12&& 练习&&& 281第10章&& 结构和列表处理&&& 28810.1&& 自引用的结构&&& 28810.2&& 线性链表&&& 28910.3&& 链表操作&&& 29010.4&& 一些链表处理函数&&& 29310.4.1&& 插入&&& 29410.4.2&& 删除&&& 29510.5&& 堆栈&&& 29610.6&& 例子:波兰记法和堆栈求值&&& 29810.7&& 队列&&& 30310.8&& 二叉树&&& 30610.8.1&& 二叉树的遍历&&& 30710.8.2&& 创建树&&& 30810.9&& 普通的树&&& 30910.9.1&& 遍历&&& 31110.9.2&& calloc()的用法以及树的创建&&& 31110.10&& 总结&&& 31210.11&& 练习&&& 313第11章&& 输入/输出和操作系统&&& 31811.1&& 输出函数printf()&&& 31811.2&& 输入函数scanf()&&& 32111.3&& fprintf()、fscanf()、sprintf()和sscanf()函数&&& 32411.4&& fopen()和fclose()函数&&& 32511.5&& 例子:对文件进行空间加倍&&& 32711.6&& 使用临时文件和优雅函数&&& 32911.7&& 随机访问文件&&& 33111.8&& 文件描述符输入/输出&&& 33211.9&& 文件访问权限&&& 33311.10&& 在C程序内部执行命令&&& 33411.11&& 在C程序内部使用管道&&& 33511.12&& 环境变量&&& 33611.13&& C编译器&&& 33711.14&& 使用性能评估程序&&& 33811.15&& 函数库&&& 33911.16&& 对C代码进行计时&&& 34011.17&& 使用make&&& 34311.18&& 使用touch&&& 34711.19&& 其他有用的工具&&& 34811.20&& 总结&&& 34911.21&& 练习&&& 350第12章&& 高级应用&&& 35812.1&& 用fork()创建并发进程&&& 35812.2&& 进程的叠加:exec...()函数族系&&& 36012.3&& 使用pipe()实现进程间的通信&&& 36212.4&& 信号&&& 36312.5&& 例子:哲学家用餐问题&&& 36512.6&& 矩阵的动态分配&&& 36812.6.1&& 为什么二维数组无法满足要求&&& 36812.6.2&& 用指针数组创建矩阵&&& 36912.6.3&& 调整下标范围&&& 37112.6.4&& 一次分配所有内存&&& 37312.7&& 返回状态&&& 37412.8&& 总结&&& 37712.9&& 练习&&& 378第13章&& 从C到C++&&& 38313.1&& 输出&&& 38313.2&& 输入&&& 38413.3&& 函数&&& 38613.4&& 类和抽象数据类型&&& 38713.5&& 重载&&& 38913.6&& 构造函数和析构函数&&& 39013.7&& 面向对象编程和继承&&& 39213.8&& 多态&&& 39313.9&& 模板&&& 39513.10&& C++的异常&&& 39613.11&& 面向对象编程的优点&&& 39613.12&& 总结&&& 39713.13&& 练习&&& 398第14章&& 从C到Java&&& 40214.1&& 输出&&& 40214.2&& 变量和类型&&& 40314.3&& 类和抽象数据类型&&& 40414.4&& 重载&&& 40614.5&& 类的创建和销毁&&& 40614.6&& 面向对象编程和继承&&& 40614.7&& 多态和重写方法&&& 40714.8&& Applet&&& 40814.9&& Java的异常&&& 40914.10&& Java和OOP的优势&&& 41014.11&& 总结&&& 41014.12&& 练习&&& 411附录A&& 标准函数库&&& 413附录B&& C的语法&&& 441附录C&& ANSI C与传统C的比较&&& 446附录D&& ASCII字符码&&& 452附录E&& 操作符的优先级和结合性&&& 454
阅读(418) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 c语言浮点数精度控制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信