ISO/IEC 9899:1999 - ANSI C语言99标准详解
4星 · 超过85%的资源 需积分: 9 71 浏览量
更新于2024-07-22
收藏 877KB PDF 举报
"ISOC 99标准,也称为C99标准,是ANSI C语言的一个重要版本,由国际标准化组织ISO和国际电工委员会IEC共同制定,具体标准编号为ISO/IEC 9899:1999。这个标准对C编程语言进行了更新和扩展,旨在提高其功能性和可移植性。C99标准引入了许多新特性,包括新的数据类型、增强的语法以及对内存管理的改进等。以下是对C99标准中一些关键概念的详细解释:
1. **环境(Environment)**:
- **5.1 概念模型**:定义了翻译环境和执行环境,前者涉及源代码到可执行代码的转换,后者涉及到程序的实际运行。
- **5.1.1 翻译环境**:描述了编译过程中的规则,包括预处理、编译、汇编和链接等步骤。
- **5.1.2 执行环境**:涵盖了程序运行时的环境,如内存分配、进程管理和系统资源。
2. **字符集和显示语义(Characters and Display Semantics)**:
- **5.2.1 字符集**:C99标准规定了字符编码的要求,包括基本的ASCII字符集和其他可能的扩展字符集。
- **5.2.2 字符显示语义**:讨论了字符在终端或显示器上的表示方式,包括宽字符和多字节字符。
3. **类型系统(Type System)**:
- **6.2 类型**:C99引入了新的类型,如复数类型、布尔类型(`_Bool`)、固定宽度整数类型(如`int8_t`、`uint32_t`)等,增强了类型的安全性和兼容性。
- **6.2.6 类型的表示**:详细规定了不同类型在内存中的存储方式,包括符号和无符号整数的二进制表示,浮点数的IEEE 754标准等。
- **6.2.7 兼容类型与复合类型**:解释了不同类型之间的兼容性规则,允许某些操作在不同类型的变量之间进行。
4. **转换(Conversions)**:
- **6.3 转换**:规定了不同类型运算符之间的转换规则,确保计算的正确性。
- **6.3.1 数值运算符**:涵盖整数、浮点数和复数类型的转换,如强制类型转换、算术运算的精度转换等。
- **6.3.1.6 复数类型**:介绍了复数类型的操作和转换规则。
- **6.3.1.7 实数与复数**:讨论了实数与复数之间的相互转换。
5. **词汇元素(Lexical Elements)**:
- **6.4 词汇元素**:包括关键字、标识符、通用字符名称等基本的编程元素。
- **6.4.1 关键字**:列举了C99语言中的保留字,如`auto`、`break`、`case`等。
- **6.4.2 标识符**:定义了如何创建和使用变量、函数等的名称。
- **6.4.3 通用字符名称**:允许程序员使用Unicode字符作为标识符的一部分,增强了国际化支持。
6. **其他特性**:
- **宏定义的改进**:C99引入了`#if`预处理器指令的增强,支持表达式求值。
- **VLA(可变长度数组)**:允许在运行时定义数组的大小,增强了内存管理的灵活性。
- **内联函数**:通过`inline`关键字,提高了函数调用的效率。
- **预声明的类型**:如`_Bool`、`NULL`等预定义类型和宏,简化了代码编写。
- **标准头文件**:C99标准规定了一些标准库函数和类型,例如数学库`<math.h>`、浮点运算控制`<float.h>`等。
C99标准的实施,使得C语言更加现代化,适应了更广泛的编程需求,并提升了程序的可读性和安全性。这一标准对于理解和开发C语言的程序具有重要的指导意义。
2007-08-03 上传
2008-09-11 上传
2009-05-14 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
dfcuix
- 粉丝: 0
- 资源: 6
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析