首页>参考读物>计算机科学与技术>软件与程序设计

C语言参考手册(原书第5版)
作者 : (美)Samuel P. Harbison III,Guy L. Steele Jr. 著
译者 : 徐波 等译
丛书名 : C语言经典译丛
出版日期 : 2011-06-02
ISBN : 978-7-111-34684-5
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 414
开本 : 16
原书名 : C: A Reference Manual
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是C语言的详尽参考手册,分为两部分:第一部分讨论了C语言的所有语言特征,包括词法、预处理机制、声明、类型、表达式、语句以及函数等基本语言特征;第二部分讨论了C语言的标准库,针对它们不同的功能分别进行详细介绍。为了帮助读者解相关概念,本书在讨论C语言及标准库的细节时,提供了许多实例和解释。第一部分的各章还提供了练习题和主要练习的解答,这些练习可帮助读者加深理解C语言的基本功能和特性。
  本书可以作为高等院校计算机专业C语言课程的教材和参考书,也可供程序开发人员参考。

图书特色

这是一本C语言的权威参考手册,对C语言的基本概念和运行函数库提供了完整的描述,并强调了以正确性、可移性和可维护性为基本出发点的良好编程风格。
  本书对C语言描述比其他任何书籍都要更加清晰和详细。本书涵盖的内容包括:
标准C(1999):新版本的C标准支持复数型和布尔类型、可变长度数组、精确浮点编程以及为可移植性国际化所提供的新函数库。
标准C(1989):当今大部分C程序员所使用的C语言版本。
传统C:1990年以前人们所使用的C语言。目前仍有数以百万行计的传统C代码还在使用中。
C++和C的兼容:可以同时用于C和C++的代码。
适用于所有C语言版本的C运行时函数库。
本书对C的所有细节都进行了描述,是C语言编程人员和编译器实现者必备的参考手册。
  本书经过深入的修订和更新,包含了对最新C语言标准(ISO/IEC 9899:1999)的完整描述,介绍了它强大的语言扩展和新函数库。
  注意:网站http://www.CAReferenceManual.com提供了本书较长的示例程序的源代码、对C语言相关问题的深入讨论、最新的ISO/IEC语言标准修订以及其他重要C语言资源的链接。

图书前言

本书是C编程语言的参考手册。本书的目标是对C语言的基本概念和运行时函数库提供完整而准确的描述,同时还强调了以正确性、可移植性和可维护性为基本出发点的良好编程风格。
  本书预期读者已经理解基本的编程概念,并希望很多读者已经可以用C语言熟练编程。为了保持参考手册的格式,本书从头到尾介绍C语言的词法结构、预处理器、声明、类型、表达式、语句、函数和运行时函数库。书中包括了许多交叉引用,使读者可以从任何地方入手。
  本版完整地介绍了最新的C语言国际标准ISO/IEC 9899:1999(C99),明确地指出了语言本身和库函数的哪些特性是C99新增的,并指出了C99与原有的C89标准的不同之处。这是目前唯一适用于所有主流C语言版本的参考手册,涵盖了传统C、1989年C标准、1995年对C89的修改和补充以及最新的C99标准。本书还介绍了标准C和标准C++的公共子集Clean C。尽管C99增加了许多新信息,但本书并没有对章节结构进行很大的改动,这样熟悉旧版的读者可以顺利地找到他所需要的材料。
  本书最初源于我们在Tartan公司的工作,为从微机到大型机的一系列计算机开发C语言编译器系列。我们要求编译器文档齐全,提供精确而有用的错误诊断信息,并能产生性能卓越的目标代码。经过某个编译器正确编译的C程序应该能够在硬件差别允许的情况下,在其他所有编译器中也能顺利通过编译。
  1984年,尽管C语言已经非常普及,但还没有一本书对C语言的介绍精确到足以指导我们设计新的编译器。另外,当时的语言描述对于那些想使用编译器对C程序进行深入分析的编程人员和客户而言仍然不够精确。在本书中,我们特别注重那些影响程序的清晰度、目标代码的有效性以及不同环境中程序移植性的语言特性。
Web站点
  读者可以访问本书的Web站点CAReferenceManual.com,其中包括本书的示例代码、更深入的讨论、澄清的问题以及C语言资源的更多链接。
致谢
  在准备本书的第5版时,特别感谢原NCITS JII主席Rex Jaeschke、芬兰赫尔辛基的Antoine Trux以及爱迪生设计集团创始人Steve Adamczyk的帮助。
  对于本书以前的版本提供过帮助的人员包括Jeffrey Esakov、Alan J.Filipski、Frank J.Wagner、Debra Martin、P.J.Plauger和Steve Vinoski。其他提供过帮助的人员包括Aurelio Bignoli、Steve Clamage、Arthur Evans、Jr., Roy J. Fuller、Morris M.Kessan、George V.Reilly、Mark Lan、Mike Hewett、Charles Fischer、Kevin Rodgers、Tom Gibb、David Lim、Stavros Macrakis、Steve Vegdahl、Christopher Vickery、Peter van der Linden和Dave Wilson。还要感谢Machael Angus、Mady Bauer、Larry Breed、Sue Broughton、Alex Czajkowski、Robert Firth、David Gaffney、Steve Gorman、Dennis Hamilton、Chris Hanna、Ken Harrenstien、Rex Jaeschke、Don Lindsay、Tom MacDonald、Peter Nelson、Joe Newcomer、Kevin Nolish、David Notkin、Peter Plamondon、Roger Ray、Larry Rosler、David Spencer和Barbara Steele。
  本书最初的一些示例程序参考了下列著作中的算法:
   Beeler,Michael,Gosper,R.William和Schroeppel,Richard,《HAKMEM》,Al Memo 239(麻省理工学院人工智能实验室,1972年2月)。
   Bentley,Jon Louis,《Writting Efficient Programs》(Prentice-Hall,1982)。
   Bentley,Jon Louis,《Programming Pearls》(1983年8月起出现在《Communications of the ACM》的每月专栏)。
   Kernighan,Brian W.和Ritchie,Dennis M.《The C Programming Language》(Prentice-Hall,1978)。
   Knuth,Donald E.《The Art of Computer Programming》第1-3卷(Addison-Wesley,1968、1969、1973、1981)。
   Sedgewick,Robert,《Algorithms》(Addison-Wesley,1983)。
  感谢这些作者的灵感。
  还有一点需要说明,Guy Steele先生由于工作繁忙,无法在新版本中参与更多工作。虽然书中仍然处处体现出他对C语言的精僻分析,但新版本所存在的任何问题,都不应该再由他负责。
  《C语言参考手册》一书已经出版了很多年,感谢所有读者多年来对它的关爱。

Sam Harbison
于宾夕法尼亚州匹兹堡市
harbison@CAReferenceManual.com

上架指导

计算机\程序设计

封底文字

这是一本C语言的权威参考手册,对C语言的基本概念和运行函数库提供了完整的描述,并强调了以正确性,可移性和可维护性为基本出发点的良好编程风格。
  本书对C语言描述比其他任何书籍都要更加清晰和详细。本书涵盖的内容包括:
■ 标准C(1999):新版本的C标准支持复数型和布尔类型、可变长度数组、精确浮点编程以及为可移植性国际化所提供的新函数库。
■ 标准C(1989):当今大部分C程序员所使用的C语言版本。
■ 传统C:1990年以前人们所使用的C语言。目前仍有数以百万行计的传统C代码还在使用中。
■ C++和C的兼容:可以同时用于C和C++的代码。
■ 适用于所有C语言版本的C运行时函数库。
■ 本书对C的所有细节都进行了描述,是C语言编程人员和编译器实现者必备的参考手册。
本书经过深入的修订和更新,包含了对最新C语言标准(ISO/IEC9899:1999)的完整描述,介绍了它强大的语言扩展和新函数库。
注意:网站http://www.careferencemanual.com提供了本书较长的示例程序的源代码、对C语言相关问题的深入讨论、最新的ISO/IEC语言标准修订以及其他重要C语言资源的链接。

作者简介

(美)Samuel P. Harbison III,Guy L. Steele Jr. 著:暂无简介

译者简介

徐波 等译:暂无简介

译者序

在众多讲述C语言的书籍中,本书是一部非常优秀的作品。它详细、精确地描述了C语言所有方面的特性。说它是C程序员案头必备的参考手册,绝对不是夸张。
  本书的作者都是享有盛誉的C语言专家,并且都曾担任C/C++语言标准委员会的成员,对C语言有着深入、独到的理解。本书正是他们殚精虑竭之作。这本手册技术细节描述精确,组织条理清晰,内容完备详尽而又简明扼要,在广度、深度和精度方面都是出类拔萃的。并且经过5个版本的完善之后,本书已经是一部非常成熟的作品。
  本书并不是一本指导初学者从头学习C语言的教程,而是一本供专业程序员在开发程序时随时查阅的参考书。它对C语言各个方面的描述既精确又扼要,对于C语言有关的任何问题,几乎都可以在本书中找到答案。它所涵盖的C语言版本包括传统C、C89、C89修正案1和C99,尤其是对C99的详细介绍,是其他C语言名作所不具备的。因此,不管读者所使用的是什么类型的C编译器,都能够从本书中受益。另外,本书还专门注意了C和C++所存在的兼容性问题,对于想开发C/C++兼容的应用程序的开发人员而言,尤其具有价值。难怪有专家评论,除了Brian W. Kernighan和Dennis M. Ritchie的经典名作《The C Programming Language》之外,唯一离不开的就是这本书。
  本书分为两个部分,第一部分是C语言本身的描述,第二部分则介绍了标准函数库。尽管本书介绍了C语言的完整知识,但它的篇幅却不是非常庞大,这一方面是由于C语言本身比较简洁,另一方面也是由于本书所使用的语言非常精练。对于专业程序员而言,最好的参考手册就是能够准确而精练地描述问题,并提供适当的例子。本书就是一本完全符合这个条件的参考手册。
  参加本书翻译工作的人员有徐波、陈永军、李福军、毛玉山、冯毅晓、陈丽娜、杨洁、张瑜、应巧敏、顾沂、董志杰、许朝阳、龚建峰等。

图书目录

译者序
前  言
第一部分 C语言
第1章  概述 2
1.1  C语言的演变 2
1.1.1  传统C 2
1.1.2  标准C(1989) 2
1.1.3  标准C(1995) 3
1.1.4  标准C(1999) 3
1.1.5  标准C++ 4
1.1.6  本书内容 4
1.2  应该使用哪种C语言 4
1.3  C编程概述 5
1.4  一致性 6
1.5  语法约定 7
第2章  词法元素 8
2.1  字符集 8
2.1.1  执行字符集 9
2.1.2  空白字符和行终止符 9
2.1.3  字符编码 10
2.1.4  三字符组 10
2.1.5  多字节字符和宽字符 11
2.2  注释 13
2.3  标记 14
2.4  操作符和分隔符 15
2.5  标识符 15
2.6  关键字 17
2.7  常量 18
2.7.1  整数常量 18
2.7.2  浮点数常量 22
2.7.3  字符常量 23
2.7.4  字符串常量 25
2.7.5  转义字符 27
2.7.6  字符转义码 28
2.7.7  数值转义码 29
2.8  C++兼容性 29
2.8.1  字符集 30
2.8.2  注释 30
2.8.3  操作符 30
2.8.4  标识符和关键字 30
2.8.5  字符常量 30
2.9  关于字符集、指令集和编码 30
2.10  练习 32
第3章  C预处理器 34
3.1  预处理器命令 34
3.2  预处理器词法约定 35
3.3  定义和替换 36
3.3.1  类似对象的宏定义 36
3.3.2  定义带参数的宏 37
3.3.3  宏表达式的重新扫描 39
3.3.4  预定义的宏 40
3.3.5  取消宏定义和重新定义宏 42
3.3.6  宏展开的优先级错误 42
3.3.7  宏参数的副作用 43
3.3.8  把标记转换为字符串 43
3.3.9 宏展开中的标记合并 44
3.3.10  宏的可变参数列表 45
3.3.11  其他问题 46
3.4  文件包含 46
3.5  条件编译 48
3.5.1  #if、#else和#endif命令 48
3.5.2  #elif命令 49
3.5.3  #ifdef和#ifndef命令 50
3.5.4  条件命令中的常量表达式 51
3.5.5  defined操作符 52
3.6  显式的行号 52
3.7  pragma指令 53
3.7.1  标准pragma命令 53
3.7.2  标准pragma指令的位置 54
3.7.3 _Pragma操作符 54
3.8  错误指令 54
3.9  C++兼容性 55
3.10  练习 55
第4章  声明 57
4.1  声明的组织形式 57
4.2  术语 58
4.2.1  作用域 58
4.2.2  可见性 59
4.2.3  前向引用 59
4.2.4  名称的重载 60
4.2.5  重复声明 61
4.2.6  重复可见性 62
4.2.7  范围 62
4.2.8  初始值 63
4.2.9  外部名称 64
4.2.10  编译时名称 65
4.3  存储类别和函数指定符 65
4.3.1  默认存储类别指定符 66
4.3.2  存储类别指定符的例子 66
4.3.3  函数指定符 67
4.4  类型指定符和限定符 67
4.4.1  默认类型指定符 68
4.4.2  缺失的声明器 69
4.4.3  类型限定符 70
4.4.4  const 70
4.4.5  volatile和序列点 72
4.4.6  restrict 74
4.5  声明器 75
4.5.1  简单声明器 75
4.5.2  指针声明器 76
4.5.3  数组声明器 77
4.5.4  函数声明器 78
4.5.5  声明器的组合 80
4.6  初始化值 81
4.6.1  整数 82
4.6.2  浮点数 83
4.6.3  指针 83
4.6.4  数组 84
4.6.5  枚举 86
4.6.6  结构 86
4.6.7  联合 87
4.6.8  省略花括号 88
4.6.9  指定成员的初始化值 88
4.7  隐式声明 89
4.8  外部名称 90
4.8.1  初始化值模型 90
4.8.2  省略的存储类别模型 90
4.8.3  公共模型 90
4.8.4  混合公共模型 91
4.8.5  总结和建议 91
4.8.6  未引用的外部声明 92
4.9  C++兼容性 92
4.9.1  作用域 92
4.9.2  标签和typedef名称 92
4.9.3  用于类型的存储类别指定符 93
4.9.4  const类型限定符 93
4.9.5  初始化值 93
4.9.6  隐式声明 93
4.9.7  定义和引用声明 94
4.9.8  函数链接 94
4.9.9  无参函数 94
4.10  练习 94
第5章  类型 97
5.1  整数类型 98
5.1.1  有符号整数类型 98
5.1.2  无符号整数类型 101
5.1.3  字符类型 102
5.1.4  扩展整数类型 104
5.1.5  布尔类型 104
5.2  浮点类型 104
5.3  指针类型 108
5.3.1  通用指针 109
5.3.2  null指针和非法指针 109
5.3.3  使用指针的一些警告 110
5.4  数组类型 111
5.4.1  数组和指针 111
5.4.2  多维数组 112
5.4.3  数组边界 112
5.4.4  操作 113
5.4.5  可变长度的数组 113
5.5  枚举类型 115
5.6  结构类型 117
5.6.1  结构类型引用 119
5.6.2  结构上的操作 120
5.6.3  成员 120
5.6.4  结构成员的布局 122
5.6.5  位段 122
5.6.6  移植性问题 124
5.6.7  结构的大小 125
5.6.8  灵活数组成员 126
5.7  联合类型 127
5.7.1  联合成员的布局 127
5.7.2  联合的大小 128
5.7.3  使用联合类型 129
5.7.4  (其他)使用联合类型 130
5.8  函数类型 131
5.9  void类型 133
5.10  typedef名称 133
5.10.1  用于函数类型的typedef名称 135
5.10.2  重定义typedef名称 135
5.10.3  编译器的说明 136
5.11  类型兼容性 136
5.11.1  等价的类型 136
5.11.2  枚举兼容性 137
5.11.3  数组兼容性 138
5.11.4  函数兼容性 138
5.11.5  结构和联合兼容性 139
5.11.6  指针兼容性 139
5.11.7  源文件之间的兼容性 139
5.12  类型名称和抽象声明器 139
5.13  C++兼容性 141
5.13.1  枚举类型 141
5.13.2  typedef名称 141
5.13.3  类型兼容性 141
5.14  练习 141
第6章  转换和表示形式 144
6.1  表示形式 144
6.1.1  存储单位和数据长度 144
6.1.2  字节顺序 145
6.1.3  对齐限制 146
6.1.4  指针的长度 147
6.1.5  地址模型的效果 147
6.1.6  类型表示形式 149
6.2  转换 150
6.2.1  表示形式的变化 150
6.2.2  细微的转换 150
6.2.3  转换为整数类型 150
6.2.4  转换为浮点类型 152
6.2.5  转换为结构和联合类型 152
6.2.6  转换为枚举类型 152
6.2.7  转换为指针类型 152
6.2.8  转换为数组和函数类型 153
6.2.9  转换为void类型 153
6.3  寻常转换 154
6.3.1  类型转换 154
6.3.2  赋值转换 154
6.3.3  寻常单目转换 155
6.3.4  寻常双目转换 157
6.3.5  默认的函数实参转换 158
6.3.6  其他函数转换 159
6.4  C++兼容性 159
6.5  练习 159
第7章  表达式 161
7.1  对象、左值和指示符 161
7.2  表达式和优先级 162
7.2.1  操作符的优先级和结合性 162
7.2.2  溢出和其他算术异常 163
7.3  基本表达式 164
7.3.1  名称 164
7.3.2  字面值 165
7.3.3  带括号的表达式 165
7.4  后缀表达式 166
7.4.1  下标表达式 166
7.4.2  成员选择 168
7.4.3  函数调用 169
7.4.4  后缀增值和减值操作符 171
7.4.5  复合字面值 172
7.5  单目表达式 173
7.5.1  类型转换 174
7.5.2  sizeof操作符 174
7.5.3  单目负号和正号 176
7.5.4  逻辑反 176
7.5.5  位反 177
7.5.6  取地址操作符 177
7.5.7  间接访问 178
7.5.8  前缀增值和减值操作符 179
7.6  双目操作符表达式 180
7.6.1  乘除操作符 180
7.6.2  加减操作符 182
7.6.3  移位操作符 183
7.6.4  关系操作符 185
7.6.5  相等操作符 186
7.6.6  位操作符 188
7.6.7  整数集合的例子 189
7.7  逻辑操作符表达式 192
7.8  条件表达式 194
7.9  赋值表达式 195
7.9.1  简单赋值 196
7.9.2  复合赋值 197
7.10  线性表达式 197
7.11  常量表达式 198
7.11.1  预处理器常量表达式 199
7.11.2  整型常量表达式 200
7.11.3  初始化值常量表达式 200
7.12  求值的顺序 201
7.13  被丢弃的值 202
7.14  内存访问的优化 203
7.15  C++兼容性 204
7.16  练习 204
第8章  语句 206
8.1  语句的基本语法规则 206
8.2  表达式语句 207
8.3  标签语句 207
8.4  复合语句 208
8.5  条件语句 210
8.5.1  多路条件语句 210
8.5.2  悬疑的else问题 211
8.6  迭代式语句 212
8.6.1  while语句 212
8.6.2  do语句 213
8.6.3  for语句 214
8.6.4  使用for语句 215
8.6.5  多个控制变量 217
8.7  switch语句 218
8.8  break和continue语句 220
8.9  return语句 222
8.10  goto语句 223
8.11  空语句 224
8.12  C++兼容性 224
8.12.1  复合语句 224
8.12.2  循环中的声明 224
8.13  练习 225
第9章  函数 226
9.1  函数定义 226
9.2  函数原型 228
9.2.1  原型出现在什么时候 230
9.2.2  混合使用原型和非原型声明 230
9.2.3  合理地使用原型 231
9.2.4  原型和调用约定 231
9.2.5  标准C和传统C的兼容性 233
9.3  形式参数声明 233
9.4  形参类型的调整 235
9.5  参数传递约定 236
9.6  形参的一致 237
9.7  函数的返回类型 238
9.8  返回类型的一致 239
9.9  main函数 239
9.10  内联函数 240
9.11  C++兼容性 242
9.11.1  原型 242
9.11.2  形参和返回类型中的类型声明 242
9.11.3  返回类型的一致 242
9.11.4  main 242
9.11.5  内联 243
9.12  练习 243
第二部分  C函数库
第10章  函数库简介 246
10.1  标准C工具 246
10.2  C++兼容性 247
10.3  库头文件和名称 249
10.3.1  assert.h 249
10.3.2  complex.h 249
10.3.3  ctype.h 249
10.3.4  errno.h 249
10.3.5  fenv.h 249
10.3.6  float.h 250
10.3.7  inttypes.h 250
10.3.8  iso64.h 250
10.3.9  limits.h 250
10.3.10  locale.h 250
10.3.11  math.h 251
10.3.12  setjmp.h 252
10.3.13  signal.h 252
10.3.14  stdarg.h 252
10.3.15  stdbool.h 252
10.3.16  stddef.h 252
10.3.17  stdint.h 252
10.3.18  stdio.h 252
10.3.19  stdlib.h 253
10.3.20  string.h 253
10.3.21  tgmath.h 253
10.3.22  time.h 254
10.3.23  wchar.h 254
10.3.24  wctype.h 254
第11章  标准语言附加 255
11.1  NULL、ptrdiff_t、size_t、offsetof 255
11.2  EDOM、ERANGE、EILSEQ、errno、
strerror、perror 256
11.3  bool、false、true 257
11.4  va_list、va_start、va_arg、va_end 258
11.5  标准C的操作符宏 261
第12章  字符处理 262
12.1  isalnum、isalpha、iscntrl、iswalnum、iswalpha、iswcntrl 262
12.2  iscsym、iscsymf 264
12.3  isdigit、isodigit、isxdigit、iswdigit、iswxdigit 264
12.4  isgraph、isprint、ispunct、iswgraph、iswprint、iswpunct 265
12.5  islower、isupper、iswlower、iswupper 266
12.6  isblank、isspace、iswhite、iswspace 266
12.7  toascii 267
12.8  toint 267
12.9  tolower、toupper、towlower、
towupper 267
12.10  wctype_t、wctype、iswctype 268
12.11  wctrans_t、wctrans 269
第13章  字符串处理 270
13.1  strcat、strncat、wcscat、wcsncat 270
13.2  strcmp、strncmp、wcscmp、wcsncmp 271
13.3  strcpy、strncpy、wcscpy、cscncpy 272
13.4  strlen、wcslen 273
13.5  strchr、strrchr、wcschr、wcsrchr 273
13.6  strspn、strcspn、strpbrk、strrpbrk、
wcsspn、wcscspn、wcspbrk 274
13.7  strstr、strtok、wcsstr、wcstok 275
13.8  strtod、strtof、strtold、strtol、strtoll、strtoul、strtoull 276
13.9  atof、atoi、atol、atoll 277
13.10  strcoll、strxfrm、wcscoll、wcsxfrm 277
第14章  内存函数 279
14.1  memchr、wmemchr 279
14.2  memcmp、wmemcmp 279
14.3  memcpy、memccpy、memmove、wmemcpy、wmemmove 280
14.4  memset、wmemset 281
第15章  输入/输出工具 282
15.1  FILE、EOF、wchar_t、WEOF 283
15.2  fopen、fclose、fflush、freopen、
fwide 284
15.2.1  文件模式 285
15.2.2  文件的定向 286
15.3  setbuf、setvbuf 287
15.4  stdin、stdout、stderr 287
15.5  fseek、ftell、rewind、fgetpos、
fsetpos 288
15.5.1  fseek和ftell 287
15.5.2  fgetpos和fsetpos 290
15.6  fgetc、fgetwc、getc、getwc、getchar、getwchar、ungetc、ungetwc 290
15.7  fgets、fgetws、gets 291
15.8  fscanf、fwscanf、scanf、wscanf、
sscanf、swscanf 292
15.8.1  控制字符串 293
15.8.2  转换规范 293
15.9  fputc、fputwc、putc、putwc、putchar、putwchar 298
15.10  fputs、fputws、puts 299
15.11  fprintf、printf、sprintf、snprintf、fwprintf、wprintf、swprintf 299
15.11.1  输出格式 300
15.11.2  转换规范 301
15.11.3  转换标志 301
15.11.4  最小字段宽度 302
15.11.5  精度 303
15.11.6  长度规范 303
15.11.7  转换操作 304
15.12  v[x]printf、v[x]scanf 311
15.13  fread、fwrite 312
15.14  feof、ferror、clearerr 313
15.15  remove、rename 314
15.16  tmpfile、tmpnam、mktemp 314
第16章  基本工具 316
16.1  malloc、calloc、mlalloc、clalloc、free、cfree 316
16.2  rand、srand、RAND_MAX 318
16.3  atof、atoi、atol、atoll 319
16.4  strtod、strtof、strtold、strtol、strtoll、strtoul、strtoull 319
16.5  abort、atexit、exit、_Exit、EXIT_FAILURE、EXIT_SUCCESS 321
16.6  getenv 322
16.7  system 323
16.8  bsearch、qsort 323
16.9  abs、labs、llabs、div、ldiv、lldiv 325
16.10  mblen、mbtowc、wctomb 326
16.10.1  编码和转换状态 327
16.10.2  长度函数 327
16.10.3  转换为宽字符 327
16.10.4  宽字符转换为多字节字符 328
16.11  mbstowcs、wcstombs 328
16.11.1  转换为宽字符串 328
16.11.2  从宽字符串转换为多字节字符 329
第17章  数学函数 331
17.1  abs、lbas、llabs、div、ldiv、lldiv 331
17.2  fabs 332
17.3  ceil、floor、lrint、llrint、lround、llround、nearbyint、round、rint、trunc 332
17.4  fmod、remainder、remquo 333
17.5  frexp、ldexp、modf、scalbn 334
17.6  exp、exp2、expm1、ilogb、log、log10、log1p、log2、logb 334
17.7  cbrt、fma、hypot、pow、sqrt 335
17.8  rand、srand、RAND_MAX 336
17.9  cos、sin、tan、cosh、sinh、tanh 336
17.10  acos、asin、atan、atan2、acosh、
asinh、atanh 337
17.11  fdim、fmax、fmin 338
17.12  类型通用的宏 338
17.13  erf、erfc、lgamma、tgamma 341
17.14  fpclassify、isfinite、isinf、isnan、isnormal、signbit 342
17.15  copysign、nan、nextafter、
nexttoward 343
17.16  isgreater、isgreaterequal、isless、
islessequal、islessgreater、isunordered 343
第18章  时间和日期函数 345
18.1  clock、clock_t、CLOCKS_PER_SEC、times 345
18.2  time、time_t 346
18.3  asctime、ctime 346
18.4  gmtime、localtime、mktime 347
18.5  difftime 348
18.6  strtime、wcsftime 349
第19章  控制函数 352
19.1  assert、NDEBUG 352
19.2  system、exec 352
19.3  exit、abort 353
19.4  setjmp、longjmp、jmp_buf 353
19.5  atexit 354
19.6  signal、raise、gsignal、ssignal、
psignal 354
19.7  sleep、alarm 356
第20章  区域 357
20.1  setlocale 357
20.2  localeconv 358
第21章  扩展整数类型 361
21.1  基本规则 361
21.1.1  类型的种类 361
21.1.2  要么都定义,要么都不定义 361
21.1.3  MIN和MAX限制 361
21.1.4  PRI...和SCN...格式字符串宏 362
21.2  固定长度的整数类型 363
21.3  具有最小宽度的最小长度类型 364
21.4  具有最小宽度的快速类型 364
21.5  指针长度和最大长度整数类型 365
21.6  ptrdiff_t、size_t、wchar_t、wint_t和sig_atomic_t的范围 366
21.7  imaxabs、imaxdiv、imaxdiv_t 366
21.8  strtoimax、strtouimax 367
21.9  wcstoimax、wcstoumax 367
第22章  浮点环境 368
22.1  介绍 368
22.2  浮点环境 369
22.3  浮点异常 369
22.4  浮点四舍五入模式 370
22.5  浮点表达式收缩 371
第23章  复数运算 372
23.1  复数函数库约定 372
23.2  complex、_Complex_I、imaginary、_Imaginary_I、I 372
23.3  CX_LIMITED_RANGE 372
23.4  cacos、casin、catan、ccos、csin、
ctan 373
23.5  cacosh、casinh、catanh、ccosh、csinh、ctanh 374
23.6  cexp、clog、cabs、cpow、csqrt 374
23.7  carg、cimag、creal、conj、cproj 375
第24章  宽字符和多字节字符工具 377
24.1  基本类型和宏 377
24.2  宽字符和多字节字符之间的转换 377
24.3  宽字符串和多字节字符串之间的转换 379
24.4  转换为算术类型 380
24.5  输入和输出函数 380
24.6  字符串函数 381
24.7  日期和时间转换 382
24.8  宽字符分类和映射函数 382
附录A  ASCII字符集 383
附录B  语法 384
附录C  练习答案 396

教学资源推荐
作者: Al Kelley, Ira Pohl
作者: 裘宗燕,李安邦 编著
作者: [印度]K.G.斯里尼瓦沙(K.G.Srinivasa) 阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla) 著
作者: Kenneth Barclay;John Savage
参考读物推荐
作者: Rod Johnson, Juergen Hoeller, Alef Arendsen, Thomas Risberg, Colin Sampaleanu
作者: (美)Marc Wandschneider 著