初识C语言

数据在计算机中的存储

  • 储存在计算机中的所有内容都是数字。计算机的导线只能传递两种状态:高电平、低电平,把这两种状态磁化到存储介质中,并用数学的形式来进行解释,用0表示低电平,1表示高电平。计算机以数字形式储存数字和字符(如,在文本文档中使用的字母),每个字符都有一个数字码。计算机载入寄存器的指令也以数字形式储存,指令集中的每条指令都有一个数字码。
  • 计算机程序最终必须以数字指令码(即,机器语言)来表示。

语言标准

第一个 ANSI/ISO C标准

美国国家标准协会(ANSI)于 1983 年组建了一个委员会(X3J11),开发了一套新标准,并于1989年正式公布。该标准(ANSI C)定义了C语言和C标准库。国际标准化组织于1990年采用了这套C标准(ISO C)。ISO C和ANSI C是完全相同的标准。ANSI/ISO标准的最终版本通常叫作C89(因为ANSI于1989年批准该标准)或C90(因为ISO于1990年批准该标准)。另外,由于ANSI先公布C标准,因此业界人士通常使用ANSI C。

C99标准

1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准。该委员会遵循了最初C90标准的原则,包括保持语言的精练简单。委员会的用意不是在C语言中添加新特性,而是为了达到新的目标。第1个目标是,支持国际化编程。例如,提供多种法处理国际字符集。第2个目标是,“调整现有实践致力于解决明显的缺陷”。因此,在遇到需要将C移至64位处理器时,委员会根据现实生活中处理问题的经验来添加标准。第3个目标是,为适应科学和工程项目中的关键数值计算,提高C的适应性,让C比FORTRAN更有竞争力。

C99的修订保留了C语言的精髓,C仍是一门简洁高效的语言。本书指出了许多C99修改的地方。虽然该标准已发布了很长时间,但并非所有的编译器都完全实现C99的所有改动。因此,你可能发现C99的一些改动在自己的系统中不可用,或者只有改变编译器的设置才可用。

C11标准

标准委员会在2007年承诺C标准的下一个版本是C1X(草案标准),2011年发布了C11标准。

本书使用术语ANSI C、ISO C或ANSI/ISO C讲解C89/90和较新标准共有的特性,用C99或C11介绍新的特性。有时也使用C90( 例如,讨论一个特性被首次加入C语言时)。

编程机制

GNU编译器集合和LLVM项目

GNU编译器集合(也被称为GCC,其中包含GCC C编译器)是GNU项目的产品之一。它的C编译器紧跟C标准的改动。GCC有各种版本以适应不同的硬件平台和操作系统,包括UNIX、Linux和Windows。用gcc命令便可调用GCC C编译器。许多使用gcc的系统都用cc作为gcc的别名。

LLVM项目成为cc的另一个替代品。该项目是与编译器相关的开源软件集合,始于伊利诺伊大学的2000份研究项目。它的Clang编译器处理C代码,可以通过clang调用。有多种版本供不同的平台使用,包括Linux。2012年,Clang成为FreeBSD的默认C编译器。Clang也对最新的C标准支持得很好。

GNU和LLVM都可以使用-v选项来显示版本信息,因此各系统都使用cc别名来代替gcc或clang命令。以下组合:

cc -v 显示你所使用的编译器及其版本。

gcc和clang命令都可以根据不同的版本选择运行时选项来调用不同C标准。

gcc -std=c99 inform.c

gcc -std=c1x inform.c

gcc -std=c11 inform.c

Clang编译器在这一点上用法与GCC相同。

posted @ 2021-03-03 10:51  nineTong  阅读(67)  评论(0)    收藏  举报