C 语言标准演进历程
来源:互联网 发布:短信轰炸源码 编辑:程序博客网 时间:2024/06/06 02:39
C 语言标准演进历程
K&R C
1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的 C 语言标准也被 C 语言程式设计师称作“ K&R C”,第二版的书中也包含了一些 ANSI C 的标准。K&R C 主要介绍了以下特色:
- 结构(struct)类型
- 长整数(long int)类型
- 无符号整数(unsigned int)类型
- 把运算符 =+ 和 =- 改为 += 和 -= 。因为 =+ 和 =- 会使得编译器不知道使用者要处理 i = -10 还是 i =- 10,使得处理上产生混淆。
即使在后来 ANSI C 标准被提出的许多年后,K&R C 仍然是许多编译器的最低标准要求,许多老旧的编译仍然运行 K&R C 的标准。
ANSI C 和 ISO C
C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织( ISO )采纳并且 ISO 发布的修订版也被 ANSI 采纳了,但名称 ANSI C ( 而不是 ISO C ) 仍被广泛使用。ANSI C 现在被几乎所有广泛使用的编译器支持。现在多数 C 代码是在 ANSI C 基础上写的。
C89 和 C90
1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于 1989 年完成,并在作为 ANSI X3.159-1989 “Programming Language C” 正式生效。这个版本的语言经常被称作 ”ANSI C”,或有时称为 ”C89”(为了区别 C99)。 在 1990 年,ANSI C 标准(带有一些小改动)被美国国家标准协会采纳为 ISO/IEC 9899:1990。这个版本有时候称为 C90 或者 ISO C 。因此,C89 和 C90 通常指同一种语言。 传统 C 语言到 ANSI/ISO 标准 C 语言的改进包括:
- 增加了真正的标准库
- 新的预处理命令与特性
- 函数原型允许在函数申明中指定参数类型
- 一些新的关键字,包括 const、volatile 与 signed 宽字符、宽字符串与字节多字符
- 对约定规则、声明和类型检查的许多小改动与澄清
// ANSI C89 函数声明int foo( int num, char ch );// K&R C 函数声明foo();
C99
2000 年 3 月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指 C99。 C99 新增了一些特性,如:
- 支持不定长的数组,即数组长度可以在运行时决定。
- 变量声明不必放在语句块的开头,for 语句提倡写成 for( int i=0; i<100; ++i ) 的形式,即 i 只在 for 语句块内部有效。
- 初始化结构的时候允许对特定的元素赋值。
- 允许编译器化简非常数的表达式。
- 取消了函数返回类型默认为 int 的规定。
但是各个公司对 C99 的支持所表现出来的兴趣不同。当 GCC 和其它一些商业编译器支持 C99 的大部分特性的时候,微软和 Borland 却似乎对此不感兴趣,他们把更多的精力放在了 C++ 上。
C11
在 2011 年 12 月,ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即 C11,它是 C 程序语言的最新标准。
- C 语言标准演进历程
- C语言标准发展历程
- C语言历程1
- 我的C语言历程
- C语言的星光历程
- c语言的发展历程
- C语言的发展历程
- 关于C语言标准
- C语言标准库
- C语言的标准
- C语言标准输入输出
- c语言标准
- C语言--标准函数
- c语言标准函数库
- C语言标准函数库
- C语言的标准
- C语言标准IO
- 标准C语言IO
- SQL Server2000 附加数据库时出现数据库累计大小超过使用许可限制的解决方法
- shell中的关联数组
- Shell脚本之场景控制脚本
- 配置tomcat,访问端口改为80
- JSP的request对象
- C 语言标准演进历程
- JSP的response对象
- 提取操作系统信息脚本
- 请求重定向与请求转发的区别
- 分析系统运行状态脚本
- session简介
- vue
- 分析系统运行状态
- JSP的session对象