C语言标准
2015-05-30 21:10
260 查看
写在前面:K&R C不用说。个人以为,我们平常说的标准C,指的是ANSI C,ISO C,C89,C90。
K&R C
结构(struct)类型
长整数(long int)类型
无符号整数(unsigned int)类型
把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。
ANSI C和ISO 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 宽字符、宽字符串与字节多字符
对约定规则、声明和类型检查的许多小改动与澄清
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程序语言的最新标准。
版权声明:原帖转自/article/6001800.html
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 宽字符、宽字符串与字节多字符
对约定规则、声明和类型检查的许多小改动与澄清
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程序语言的最新标准。
版权声明:原帖转自/article/6001800.html
相关文章推荐
- C语言及程序设计进阶例程-10 预处理之条件编译
- C语言及程序设计进阶例程-9 预处理之文件包含
- C语言及程序设计进阶例程-8 预处理之宏定义
- c++引用与指针的区别(着重理解)
- C语言及程序设计进阶例程-7 递归经典:汉诺塔
- C语言及程序设计进阶例程-6 递归法问题求解
- C语言及程序设计进阶例程-5 认识递归
- (转)C++中的静态数据
- C语言及程序设计进阶例程-4 外部全局变量和静态全局变量
- C语言及程序设计进阶例程-2 一个程序,多个文件
- 黑马程序员-C语言的几种定义类型的总结
- C++左旋字符串
- C语言电梯模拟程序
- C语言实现原码补码输出
- 【学习笔记】【C语言】变量
- c++中友元机制
- C++ 学习笔记(三) 编写makefile
- 复习c++
- sizeof和sizeof(string)的问题
- c++ 多态