KR C1978年丹尼斯•里奇Dennis Ritchie和布莱恩•柯林汉Brian Kernighan合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“KR C”第二版的书中也包含了一些ANSI C的标准。KR C主要介绍了以下特色结构struct类型长整数long int类型无符号整数unsigned int类型把运算符和-改为和-。因为和-会使得编译器不知道使用者要处理i -10还是i - 10使得处理上产生混淆。即使在后来ANSI C标准被提出的许多年后KR C仍然是许多编译器的最低标准要求许多老旧的编译仍然运行KR C的标准。ANSI C和ISO CC 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。C89和C901983年美国国家标准协会组成了一个委员会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 宽字符、宽字符串与字节多字符对约定规则、声明和类型检查的许多小改动与澄清C992000年3月ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。 C99新增了一些特性如支持不定长的数组即数组长度可以在运行时决定。变量声明不必放在语句块的开头for 语句提倡写成 for(int i0;i初始化结构的时候允许对特定的元素赋值。允许编译器化简非常数的表达式。取消了函数返回类型默认为 int 的规定。但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候微软和Borland却似乎对此不感兴趣他们把更多的精力放在了C上。C11在2011年12月ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即C11它是C程序语言的最新标准。c11新添标准