在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C++继续在改进。(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在90年代才经历了改进,这就是ISO9899:1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年3月采用。 ### C99标准详解 #### 引言 C99是C语言的一种国际标准,它在1999年由国际标准化组织(ISO)发布,并在随后由美国国家标准协会(ANSI)采纳。C99是对早期C语言标准的重要更新,引入了许多新特性,这些特性不仅提升了编程效率,还增强了程序的可移植性和可读性。 #### C99标准的发展历程 自从C语言在1972年由Dennis Ritchie发明以来,它的标准经历了一段长时间的稳定期。直到1989年,ANSI发布了第一个正式的C语言标准——ANSI C或称为C89。随着计算机技术的发展,人们逐渐发现C89存在一些局限性,例如缺乏对浮点运算的支持、缺少一些现代编程语言常见的功能等。因此,在1999年,ISO发布了ISO9899:1999,即C99标准,这是C语言发展史上的一个重要里程碑。 #### C99标准的主要内容 C99标准涵盖了C语言的各个方面,包括但不限于词汇元素、表达式、声明和语句等内容。以下是根据C99标准文档的部分内容进行的详细解读: 1. **概念模型**: - **翻译环境**:指编译器处理源代码的环境,包括预处理、词法分析、语法分析、语义分析等阶段。 - **执行环境**:指程序运行时的环境,包括内存管理、文件系统访问等。 2. **环境考量**: - **字符集**:定义了C语言支持的字符集,包括基本的ASCII字符集以及扩展的多字节字符集。 - **字符显示语义**:规定了字符在屏幕上显示的方式。 - **信号与中断**:描述了如何处理操作系统发送给程序的信号和中断。 - **环境限制**:列举了一些关于资源使用的最大值或最小值的规定。 3. **语言**: - **表示法**:介绍了一些用于描述语言特性的符号和术语。 - **概念**: - **标识符的作用域**:描述了变量和函数等标识符的有效范围。 - **标识符的链接**:解释了不同文件中的标识符如何相互作用。 - **标识符的命名空间**:说明了如何避免标识符冲突。 - **对象的存储持续时间**:定义了变量和其他对象在程序运行过程中的生命周期。 - **类型**:详细列出了C语言支持的所有数据类型,包括基本类型、复合类型等。 - **类型的表示**:解释了不同类型的数据在内存中的存储方式。 - **兼容类型和复合类型**:区分了不同类型的兼容性和复合性。 4. **转换**: - **算术操作数**:描述了不同类型数值之间的自动转换规则。 - **其他操作数**:说明了除算术运算之外的操作数的转换规则。 5. **词汇元素**: - **关键字**:列举了C语言中所有的关键字。 - **标识符**:定义了标识符的构成规则。 - **通用字符名称**:解释了如何表示非ASCII字符。 - **常量**:描述了各种类型的常量,如整型、浮点型等。 - **字符串字面量**:介绍了字符串的表示方法。 - **标点符号**:列举了C语言中使用的标点符号。 - **头文件名**:解释了如何引用预定义的头文件。 - **预处理数字**:说明了预处理器指令中的数字使用规则。 - **注释**:介绍了C语言中注释的用法。 6. **表达式**: - **主要表达式**:定义了表达式的最基本组成部分。 - **后缀运算符**:包括数组下标访问、函数调用等。 - **一元运算符**:如负号、逻辑非等。 - **类型转换运算符**:将一个表达式的类型转换为另一种类型。 - **乘法运算符**:包括乘法、除法和取模运算。 - **加法运算符**:包括加法和减法运算。 - **位移运算符**:用于左移和右移操作。 - **关系运算符**:比较两个表达式的大小关系。 - **相等运算符**:判断两个表达式是否相等。 - **按位与运算符**、**按位异或运算符**、**按位或运算符**:执行二进制位操作。 - **逻辑与运算符**、**逻辑或运算符**:执行逻辑操作。 - **条件运算符**:用于三元条件表达式。 - **赋值运算符**:包括简单的赋值以及复合赋值操作。 - **逗号运算符**:用于连接多个表达式。 7. **常量表达式**: - 描述了如何在编译时计算出确定值的表达式。 8. **声明**: - 包括存储类别、类型说明符、类型限定符等内容,详细规定了如何声明变量、函数等。 9. **语句和块**: - 定义了C语言中可用的各种语句类型,如标签语句、复合语句等。 通过以上对C99标准的部分内容的解析,我们可以看出C99不仅仅是对C89的一个简单升级,而是对整个语言进行了一次全面而深入的改进。这些改进使得C语言更加现代化,能够更好地满足现代软件开发的需求。
2025-05-13 20:54:06 1.04MB
1
C99标准手册,提供给大家来阅读,适合初学C语言的同学,能在最开始学习C语言的时候就结合标准手册,其实是一种非常有效的方法。
2022-10-30 22:16:54 1.16MB C99标准
1
C99 标准规范英文原版和中文翻译版
2022-04-06 01:12:03 46.22MB C99 C99中文 C99英文 C规范
1
C语言ISO标准C99; 英文版; 自带目录; pdf格式, 非扫描版, 支持文本搜索; 深入学习掌握标准C语言的不二选择
2022-03-28 21:40:26 2.09MB C99标准 英文版 自带目录 非扫描版本
1
C标准库函数集,介绍各个.h文件所包含的函数
2022-03-15 23:48:10 235KB C函数库
1
C99 标准完整版 最权威全英文版,不用再去找其他 的了
2021-12-27 22:00:34 3.33MB C99 标准
1
c/c++常用函数中文参考(c99标准api)。内容包含操作符优先级,ascii码对照表,c语言标准库,c++标准库,c++ STL等。
2021-11-29 16:07:32 116KB c/c++ api
1
NULL 博文链接:https://lippeng.iteye.com/blog/741031
2021-11-02 21:51:46 1.73MB 源码 工具
1
C99标准文档 Foreword ............................. xi Introduction ............................ xiv 1. Scope ............................. 1 2. Normative references ....................... 2 3. Terms, definitions, and symbols ................... 3 4. Conformance .......................... 7 5. Environment .......................... 9 5.1 Conceptual models ..................... 9 5.1.1 Translation environment ................ 9 5.1.2 Execution environments ................ 11 5.2 Environmental considerations ................. 17 5.2.1 Character sets .................... 17 5.2.2 Character display semantics .............. 19 5.2.3 Signals and interrupts ................. 20 5.2.4 Environmental limits ................. 20 6. Language ............................ 29 6.1 Notation .......................... 29 6.2 Concepts ......................... 29 6.2.1 Scopes of identifiers ................. 29 6.2.2 Linkages of identifiers ................. 30 6.2.3 Name spaces of identifiers ............... 31 6.2.4 Storage durations of objects .............. 32 6.2.5 Types ....................... 33 6.2.6 Representations of types ................ 37 6.2.7 Compatible type and composite type ........... 40 6.3 Conversions ........................ 42 6.3.1 Arithmetic operands ................. 42 6.3.2 Other operands ................... 46 6.4 Lexical elements ...................... 49 6.4.1 Keywords ...................... 50 6.4.2 Identifiers ...................... 51 6.4.3 Universal character names ............... 53 6.4.4 Constants ...................... 54 6.4.5 String literals .................... 62 6.4.6 Punctuators ..................... 63 6.4.7 Header names .................... 64 6.4.8 Preprocessing numbers ................ 65 6.4.9 Comments ..................... 66 6.5 Expressions ........................ 67 ... ... ... 7.22 Type-generic math ............... 334 7.23 Date and time .................. 337 7.23.1 Components of time ................. 337 7.23.2
2021-10-29 20:55:49 1.34MB C99 C99标准
1
c99标准.pdf
2021-10-02 16:28:54 1.54MB c99标准.pdf
1