首先明白一点:标准 c只是一种标准规范,并没有实现,在实际中,针对不同的平台,不同的编译器,c的实现使用会有不同,但一般都兼容实现了标准c,但同时这些都会有自己的一些特性。同理c++标准。
先看c标准的演化:
标准C:很多时候搜索标准c经常会搜到ANSI c 、ISO c 或者Standard C,很是困惑这3者的区别,其实以目前的标准来看,已经可以说成都是标准c的一种别称。当然这都是跟标准c的演化有关。
C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织 (ISO)采纳并且ISO发布的修订版(即后面的一些新的修订标准)也被ANSI采纳了,但后边的标准仍习惯使用名称ANSI C(而不是 ISO C)。当然也有一些软件开发者使用ISO C,还有一些使用 Standard C。
C89(这个才是实际上的ANSI C,因为只有这个是ANSI制定的正式标准,后面的正式标准都是ISO制定,而ANSI也采纳的标准)
1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立C 的一 套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 "Programming LanguageC"正式生效。这个版本的语言经常 被称作"ANSIC",或有时称为"C89"(为了区别C99)。
C90
在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为 ISO/IEC 9899:1990。这个版本有时候称为C90。因此,C89和C90通常指同 一种语言。
C99
在2000年三月,ANSI 采纳了 ISO/IEC9899:1999 标准。这个标准通常指 C99,它是C程序语言的现行标准。
C11
2001年和2004年先后进行了两次技术修正。
2011年12月8日,ISO正式公布C语言新的国际标准草案:ISO/IEC 9899:2011,即C11
再看看C++:
C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现,最初只是作为c的一个增强版出现的,所以开始被称为c with classes,即开始只是在c的基础上增加了类!所以开始的c++(当然也可以认为这还不是c++,因为这时候还没有c++标准)并没有虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)机制,这些都是在后来的修订中逐渐加入的。
ANSI/ISOC++(C++98):
1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISOC++,也可称为C++98。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。
C++11:
2011年9月1日,C++最新标准C++11公布。