1.1 C语言的史前阶段:
早起的C、UNIX和相关的硬件
语言:
BCPL(1965-7) --> B(1969) --> NewB(1971) --> 早起的C(1972)
操作系统:
UNIX(用PDP-7汇编语言编写) --> UNIX(用PDP-11汇编语言编写) --> UNIX(用C编写)
硬件:
PDP-7 --> PDP-11 --> IBM 360 --> Honeywell 635
1.2 C语言的早起体验:
数组下表从0开始而非1 ---> 主要是偏移量的概念在编译器设计者心中根深蒂固的原因
C语言的基本数据类型直接与底层硬件相对应
auto关键字是摆设
表达式中的数组名可以看做是指针
float被自动扩展为double
不允许嵌套函数(函数体内定义另外一个函数)
register关键字
1.3 标准I/O库和预处理器
Mike Lesk 可移植(3个通用平台)I/O(1972年) ---> 性能问题 ---> 优化裁剪 ----> 标准I/O函数库
Alan Snyder C预处理器:
字符串替换
头文件包含
通用代码模块的扩展(宏的错误使用示范)
1.4 K&RC
C语言演化(后期的C)
早期的C(1972-3) ---> K&RC(1976-9) ---> ANSI C(1983-9) --->
1978年, C语言经典名著《The C Programming Language》出版, 作者 Brain Kernighan 和 Dennis Ritchie, 该版本的C语言被称为“K&R C”.
1.5 今日的ANSI C
1983年美国国家标准化组织(ANSI)成立了C语言工作小组, 开始了C语言的标准化工作.
1989年12月, ANSI委员会采纳C语言标准草案. ISO也接纳了ANSI C标准(但删除了Rationale章节).
1990年初, ANSI重新采纳了ISO C
早起的C、UNIX和相关的硬件
语言:
BCPL(1965-7) --> B(1969) --> NewB(1971) --> 早起的C(1972)
操作系统:
UNIX(用PDP-7汇编语言编写) --> UNIX(用PDP-11汇编语言编写) --> UNIX(用C编写)
硬件:
PDP-7 --> PDP-11 --> IBM 360 --> Honeywell 635
1.2 C语言的早起体验:
数组下表从0开始而非1 ---> 主要是偏移量的概念在编译器设计者心中根深蒂固的原因
C语言的基本数据类型直接与底层硬件相对应
auto关键字是摆设
表达式中的数组名可以看做是指针
float被自动扩展为double
不允许嵌套函数(函数体内定义另外一个函数)
register关键字
1.3 标准I/O库和预处理器
Mike Lesk 可移植(3个通用平台)I/O(1972年) ---> 性能问题 ---> 优化裁剪 ----> 标准I/O函数库
Alan Snyder C预处理器:
字符串替换
头文件包含
通用代码模块的扩展(宏的错误使用示范)
1.4 K&RC
C语言演化(后期的C)
早期的C(1972-3) ---> K&RC(1976-9) ---> ANSI C(1983-9) --->
1978年, C语言经典名著《The C Programming Language》出版, 作者 Brain Kernighan 和 Dennis Ritchie, 该版本的C语言被称为“K&R C”.
1.5 今日的ANSI C
1983年美国国家标准化组织(ANSI)成立了C语言工作小组, 开始了C语言的标准化工作.
1989年12月, ANSI委员会采纳C语言标准草案. ISO也接纳了ANSI C标准(但删除了Rationale章节).
1990年初, ANSI重新采纳了ISO C