ANSI C 与 K&R C

一、简介
   C语言由Dennis M.Ritchie在1973年设计和实现。从那以后使用者逐渐增加。到1978年Ritchie和Bell实验室的另一位程序专家Kernighan合写了著名的《TheC ProgrammingLanguage》,将C语言推向全世界,许多国家都出了译本,国内有一些C语言书就是这本书的翻译或者编译。由这本书定义的C语言后来被人们称作K&R C。
    随着C语言使用得越来越广泛,出现了许多新问题,人们日益强烈地要求对C语言进行标准化。这个标准化的工作在美国国家标准局(ANSI)的框架中进行(1983-1988),最终结果是1988年10月颁布的ANSI标准X3.159-1989,也就是后来人们所说的ANSIC标准。由这个标准定义的C语言被称作ANSI C。
    ANSI C标准很快被采纳为国际标准和各国的标准。国际标准为ISO/IEC9899-1990,中国国家标准GB/T 15272-94是国际ISO标准的中文翻译。
    ANSIC标准化工作的一个主要目标是清除原来C语言中的不安全、不合理、不精确、不完善的东西。由此也产生了ANSIC与K&RC之间的差异。从总体上看,这些差异反应的是C语言走向完善、走向成熟。

二、ANSI C 对 K&R C 的修订

(本段根据《C ProgrammingLanguage》和C语言标准整理。不求完整,希望列出最常见的差异)

  1. 对于源文件内部的标识符,有效的最小长度扩充到31个字符。文件间连接时,标识符的最小有效长度仍然为6个字符。(许多实现都支持更大的长度)
  2. 增加了几个新关键字:void,const,volatile,signed,enum。抛弃了老关键字entry。
  3. 在换意字符 \ 之后写非规定的序列,其作用确定为无定义。
  4. 规定8和9都不是八进制数的合法字符。
  5. 引进了数的后缀字符:整数的U和L,浮点数的F和L。
  6. 规定连续出现的字符串常量将被拼接在一起。
  7. 引进了“宽字符”的概念。
  8. 将字符也确定为带符号(signed)和不带符号(unsigned)的。
  9. 丢弃了long float(原来作为double的同义词)。
  10. 引入了void类型,用 (void*)表示通用指针的类型(过去人们通常用 (char*))。
  11. 对算术类型规定了最小表示范围。要求每个C语言系统用头文件(

猜你喜欢

转载自blog.csdn.net/m0_37925202/article/details/79143580
今日推荐