在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
Visual Studio2008下C99头文件,解决了C99标准没有被包含在VC中的一小部分问题
2024-08-01 17:29:15 7KB Visual Studio2008 Standard
1
关于c语言标准的c99,对于深入理解C有帮助。
2023-04-28 21:07:11 3.61MB C 标准 C99
1
最新 C 标准参考手册,包含:C89, C95, C99, C11, C17
2023-03-09 19:47:04 73.37MB C89 C95 C99 C11
(0积分)C语言标准(c89,c99,c11,c17,c2x)
2023-02-28 10:23:22 20.98MB c语言 开发语言
1
C语言标准(ANSI+C+C89+C99),内有C Standard ISO-IEC 9899-1999 (E),ISO_IEC_9899_1999_Cor_1_2001(E),ISO_IEC_9899_1999_Cor_2_2004(E),The rationale for the C99 standard,WG14 n1124 (C99 + TC1 + TC2)。
2023-01-03 14:32:28 4.59MB C语言
1
R软件代码转换为matlab 雨流计数算法(4点方法),符合C99 “雨流计数”包括四个主要步骤: 磁滞滤波 峰谷滤波 离散化 四点计数法: * D / \ Closed, if min(B,C) >= min(A,D) && max(B,C) <= max(A,D) B *<--/ Slope B-C is counted and removed from residue / \ / / * C \ / * A 这些步骤在以下标准中已完全记录在案: ASTM E1049“疲劳分析中循环计数的标准实践” [1] 此实现使用了[3,4]中提到的4点算法和[2]中提出的3点HCM方法。 要考虑残留物,您可以实现自定义方法或使用一些预定义的功能。 该包装的特点 模块化体系结构分为两层: a)模块rainflow.c (带有rainflow.h )具有所有必要的功能,用于雨流量计数和直方图提取。 您可以在编译时选择多个可选功能: RFC_MINIMAL :仅将核心功能用于RFC_MINIMAL数(例如,移植到µControllers)。 RFC_TP_SUPPORT :转折点存储。 RFC_H
2022-11-11 20:05:50 122KB 系统开源
1
C99标准手册,提供给大家来阅读,适合初学C语言的同学,能在最开始学习C语言的时候就结合标准手册,其实是一种非常有效的方法。
2022-10-30 22:16:54 1.16MB C99标准
1
C语言的三套标准 ANSIIISO9899-1990 ISO/IEC 9899:1999 (E) ISO/IEC 9899:201x
2022-10-03 09:00:52 11.13MB C语言 编程语言
1
C99前六章中文完整版,后面的是库和附录没有翻译,可对照英文版阅读。
2022-09-06 18:00:49 1.2MB
1