1、C 语言标准
什么是 C 语言标准呢?
我们生活的现实世界,就是由各种标准构成的,正是这些标准,我们的社会才会有条不紊的运行。
比如我们过马路,遵循的交通规则就是一个标准:红灯停,绿灯行,黄灯亮了等一等。当行人和司机都遵循这个默认的标准时,我们的交通系统才会顺畅运行。
电脑中的 USB 接口也是一种标准,当大家生产的 USB 产品都遵循 USB 协议这种通信标准时,我们的手机、U 盘、USB 摄像头、USB 网卡才可以在各种电脑设备上互插互拔。
2G、3G、4G 也是一种标准,当不同厂家生产的基带芯片都遵循这种通信标准,我们所用的不同品牌、不同操作系统的手机才可能互相打电话、互相发微信、互相给对方点赞。
同样,C 语言也有它自己的标准。
我们知道,C 语言程序需要通过编译器,编译生成二进制指令,才能在我们的电脑上运行。在 C 语言刚发布的早期,各大编译器厂商开发自己的编译器时,各自开发,各自维护,时间久了,就会变得比较混乱。
这就会造成这样一种局面:程序员写的程序,在一个编译器上编译通过,在另一个编译器编译通不过。大家按各自的习惯来,谁也不服谁,就像春秋战国时代:不同的货币、不同的度量衡,不同的文字,都是中国人,因为标准不统一,所以交流起来很麻烦,这样下去也不是办法啊。
后来 ANSI(AMERICAN NATIONAL STANDARDS INSTITUTE: 美国国家标准协会,简称 ANSI)出山了,联合 ISO(国际化标准组织)召集各个编译器厂商大佬,各种技术团体,一起喝个茶、开个碰头会,开始启动 C 语言的标准化工作。期间各种大佬之间也是矛盾重重,充满各种争议,但功夫不负有心人,经过艰难的磋商,终于在1989年达成一致,发布了 C 语言标准,后来第二年又做了一些改进。于是,就像秦始皇统一六国、统一文字和度量衡一样,C 语言标准终于问世了!因为是在 1989 年发布的,所以人们一般称其为 C89 或 C90 标准,或者叫做ANSI C 。
2、C 标准内容
C 标准英文文档几百页,讲了很多东西,但总体归纳起来,主要就是 C 语言编程的一些语法惯例,比如:
定义各种关键字、数据类型
定义各种运算规则
各种运算符的优先级和结合性
数据类型转换
变量的作用域
函数原型
函数嵌套层数
函数参数个数限制
标准库函数
C 标准发布后,大家都遵守这个标准:程序员开发程序时,按照这种标准写;编译器厂商开发编译器时,也按照这种标准去解析、翻译程序。不同的编译器厂商支持统一的标准,这样大家写的程序,使用不同的编译器,都可以正确编译、运行,大大提高程序的开发效率,推动了 IT 行业的发展。
3、C 标准的发展历程
C 标准并不是永远不变的,就跟移动通信一样,也是从 2G、3G、4G 到 5G 不断发展变化的。C 标准也经历了下面四个阶段:
K&R; C
ANSI C
C99
C11
☆ K&R; C
K&R; C 一般也称为传统 C。在 C 标准没有统一之前,C 语言的作者 Dennis Ritchie 和 Brian Kernighan 合作写了一本书《C 程序设计语言》。早期程序员编程,这本书可以说是绝对权威。这本书很薄,内容精炼,主要介绍了 C 语言的基本使用方法。后来《C 程序设计语言》第二版问世,做了一些修改:比如新增 unsigned int、long int、struct 等数据类型;把运算符 =+/=- 修改为 +=/-=,避免运算符带来的一些歧义和 Bug。这本书可以看作是 ANSI 标准的雏形。但早期的 C 语言还是很简单的,比如还没有定义标准库函数、没有预处理命令等。
☆ ANSI C
ANSI C 是 ANSI(美国国家标准协会)在 K&R; C 的基础上,统一了各大编译器厂商的不同标准,并对 C 语言语法和特性做了一些扩展,而发布的一个标准。这个标准一般也叫做 C89/C90,也是目前各种编译器默认支持的 C 语言标准。ANSI C 主要新增了以下特性:
● 增加 signed、volatile、const 关键字
● 增加 void* 数据类型
● 增加预处理器命令
● 增加宽字符、宽字符串
● 定义了 C 标准库
……
☆ C99 标准
C99 标准是 ANSI 1999 年在 C89 标准的基础上新发布的一个标准,该标准对 ANSI C 标准做了一些扩充,比如新增一些关键字,支持新的数据类型:
● 布尔型:Bool
● 复数:_Complex
● 虚数:_Imaginary
● 内联:inline
● 指针修饰符:restrict
● 支持long long、long double数据类型
● 支持变长数组
● 允许对结构体特定成员赋值
文章来源:《电脑编程技巧与维护》 网址: http://www.dnbcjqywh.cn/zonghexinwen/2020/0821/397.html
电脑编程技巧与维护投稿 | 电脑编程技巧与维护编辑部| 电脑编程技巧与维护版面费 | 电脑编程技巧与维护论文发表 | 电脑编程技巧与维护最新目录
Copyright © 2018 《电脑编程技巧与维护》杂志社 版权所有
投稿电话: 投稿邮箱: