C语言发展至今,共形成过4种标准。
K&R C(也叫经典 C)
1987年,Brian Kernighan 和 Dennis Ritchie合著的The C Programming
Language 第1版是公认的C标准。它定义了c语言,但没有定义c库。它不是官方的标准。
C89
是由美国国家标准协会(ANSI)在 1989年正式公布的标准。该标准 定义了C语言和C标准库。 它的制定理念是:
- 信任程序员;
- 不要妨碍程序员做需要做的事;不要妨碍程序员做需要做的事;
- 保持语言精练简单;保持语言精练简单;
- 只提供一种方法执行一项操作;
- 让程序运行更快, 即使不能保证其可移植性(具体目标系统具体实现)。
Tips
- 国际标准化组织(ISO)采用了这套C标准,因此ISO C和ANSI C是完全相同的标准。
- ANSI于1989年批准该标准,因此通常称之为C89。
- ISO于1990年批准该标准,因而又有C90的叫法。
C99
ANSI/ISO联合委员会(C9X委员会)修订C标准,最终发布了C99标准。
- 遵循了最初C90标准的原则, 包括保持语言的精练简单。
- 委员会的用意不是在C语言中添加新特性, 而是为了达到新的目标。
第1个目标是, 支持国际化编程。 例如 提供多种方法处理国际字符集;
第2个目标是, “调整现有实践致力于解决明显的缺陷”。 因此, 在遇到需要将C移至64位处理器时, 委员会根据现实生活中处理问题的经验来添加标准;
第3个目标是, 为适应科学和工程项目中的关键数值计算,提高C的适应性。
C11
2011年发布C11标准。 此次, 委员会提出了一些新的指导原则:
- 出于对当前编程安全的担忧, 不那么强调“信任程序员”目标了;
- 修订标准的原因不是因为原标准不能用, 而是需要跟进新的技术;
- 供应商并未像对C90那样很好地接受和支持C99,这使得C99的一些特性成为C11的可选项。
其他-关于main()的说明
有时候我们在书中经常会看到主函数用void main() 定义,但事实上这种用法并不是任何标准制定的。 C语言标准语法是int main(),任何实现都必须支持如下两种:
int main(void) { /* ... */ };
int main(int argc, char* argv[]) { /* ... */ };
.
.
.
.
.
.
桃花仙人种桃树,又摘桃花换酒钱_