文档介绍:1c的标准化过程
c语言自诞生到现在,期间经历了多次标准化过程,主要分成以下几个阶段:
Traditional C
此时的C语言还没有标准化,来自“C Programining Language, First Edition, by Brian W. Kernighan, Dennis M. Ritchie. Prentice Hall PTR 1978”的 C 描述可算作“正式”的标准,所以此时的C也称为“K&R” C。
期间C语言一直不断的发生细微的变化,各编译器厂商也有自己的扩展,这个过 程一直持续到20世纪80年代末。
1. 2 C89
考虑到标准化的重要,ANSI (American National Standards Institute)制定了 第— C 标准,在 1989 年被正式采用(American National Standard
X3. 159-1989),故称为 C89,也称为 ANSI Co
该标准随后被ISO采纳,成为国际标准(IS0/IEC 9899:1990)。
C89的主要改动:
.定义了 C标准库;
•新的预处理命令和特性;
•函数原型(prototype);
•新关键字:const、volatile、signed;
•宽字符、宽字符串和多字节字符;
•转化规则、声明(declaration) >类型检查的改变。
1. 3 C95
这是对C89的一个修订和扩充,称为“C89 with Amendment 1”或C95,严格说 来并不是一个真正的标准。
C95的主要改动:
•3 个新标准头文件:iso646. h、wctype. h> wchar. h;
•-一些新的标记(token)和宏(macro);
•一些新的printf/scanf系列函数的格式符;
.增加了大量的宽字符和多字节字符函数、常数和类型。
C99
这是目前最新的标准,由ISO制定于1999年(ISO/IEC 9899:1999),故称为C99。
C99的主要改动:
•复数(complex);
•整数(integer)类型扩展;
•变长数组;
• Boolean 类型;
.非英语字符集的更好支持;
•浮点类型的更好支持;
.提供全部类型的数学函数;
•C++风格注释(//)o
2 C标准文档
2. 1 C99
这是一个pdf文件:c99. pdf 0
2. 2 C89
C99已经替代C89成为标准,所以C89文档已经很难找了。 下面是书籍 u C Programming Language,
Second Edition, by Brian W. Kernighan, Dennis M. Ritchie. Prentice Hall PTR (April 1, 1988), 0131103628."附 录A的一份拷贝,在此作为C89标准以供需要时查阅。
同时也提供中文版本,内容来自该书对应的中译版“《C程序设计语言》,徐宝 文等译,机械工业出版社出版,ISBN 7111075897"。
文档仅供个人参考使用(建议以英文版为主):
英文版 中文版
为方便起见,提供一份标点符号中英对照表,希望有用:标点符号中英对照表。
3 C标准的选择
选择标准依赖于编译器的支持和对可移植性的要求。
C99是当前的标准,但它仍未得到广泛支持,虽然标准发布已经多年。C99对 C89(C95)的改动非常大,如果编写C99的代码,那么可移植性必然受到限制。此 外,个人认为C99的一些新特性在大多数程序设计中并不是必须的。
C89 (包括C95)是目前使用最广泛的,并得到所有主流编译器的支持。
Traditional C现在只会在一些非常老的代码中才能见到了,除非你在维护旧代 码,否则不应该再使用它。
所以,个人觉得当前还是以C89(包括C95)标准为主。
1引言
本手册描述的C语言是1988年10月31日提交给ANSI的草案,批准号为“美国 国家信息系统标准一C程序设计语言,X3. 159-1989”。尽管我们已非常小心, 以便这个手册的介绍可以信赖,但它毕竞不是标准本身,而是对标准的一个解释。 这个手册的安排基本与标准相似,也与本书的第1版相似,但是对细节的组织是 不同的。本手册给出的语法与标难是一样的,只是有少量产生式有所修改,词法 元素和预处理器的定义也非形式化。注释部分说明了
ANSI标准C与本书第1版 介绍的或其他编译器所支持的语言的细微差别。
2词法规则
一个程序由存储在文件中的一个或多个翻译单元织成,程序的翻译分几个阶段完 成,这将在12节中介绍。翻译的第一阶段完成低级的词法转换,执行由字符# 开