考研408专业课初阶必会通关01 01 02 初步了解C语言

        C语言作为一门古老而受欢迎的编程语言,经历了多个版本的演进和标准化。

一、C语言标准化

        C语言的发展历史可以分为多个阶段,每个阶段都对应一个标准。

        C语言的标准化是为了保证不同编译器、不同操作系统下的程序能够有一致的行为,同时也方便程序员进行交流和开发。

1、K&R C

        K&R C 是 C语言的第一个标准,由 C语言的创始人 Dennis Ritchie 和 Brian Kernighan 于 1978 年在其著作《The C Programming Language》中定义。

        K&R C 标准包含了 C语言的基本语法、数据类型、运算符等,但是并不是完整的语言规范,缺少了一些重要的特性,例如函数原型、结构体等。因此,K&R C 标准已经过时,不再被广泛使用。

2、ANSI C

        ANSI C 是 C语言的第二个标准,由美国国家标准协会(ANSI)于 1983 年发布。该标准定义了 C语言的全部语法、数据类型、库函数等,是 C语言的第一个完整的规范。ANSI C 标准还引入了一些新特性,例如函数原型、void 类型、const 限定符等。

        ANSI C 标准被广泛采用,成为了 C语言的主流标准。

3、C89/C90

        C89/C90 是 ISO/IEC 9899 标准,也是 ANSI C 的国际标准版本,于 1989 年发布。该标准与 ANSI C 基本一致,但是对于一些问题进行了更严格的定义,例如字符集、浮点数计算等。

        C89/C90 标准成为了 C语言的主流标准,并被广泛应用于各个领域。

4、C99

        C99 是 ISO/IEC 9899:1999 标准,于 1999 年发布。C99 标准对 C语言进行了大量的扩展和改进,引入了很多新特性,例如布尔类型、复数类型、变长数组、标准宏等。C99 标准还修正了一些 C89/C90 标准中的错误和不足之处,使得 C语言更加完善和健壮。C99 标准在学术界和一些特定领域得到了广泛的应用,但在工业界的普及程度相对较低。

5、C11

        C11 是 ISO/IEC 9899:2011 标准,于 2011 年发布。C11 标准在 C99 基础上进行了进一步的扩展和改进,包括了一些新特性,例如泛型宏、多线程支持、_Static_assert 等。C11 标准对于一些早期 C标准中存在的问题进行了修正,使得 C语言更加健壮和安全。C11 标准在工业界的普及程度相对较低,但已经被一些编译器支持。

6、C17

        C17是ISO/IEC 9899:2018标准,于2018年发布。C17标准在C11基础上进行了一些小的修订和更新,主要是对标准库进行了一些改进和扩展。C17标准对于C语言本身特性并没有做出太大的改变,主要是对于一些库函数进行了更新和扩展。C17标准目前还比较新,尚未得到广泛的应用。

7、C20

        C20 标准于 2019 年发布C20 引入了一些新特性,包括一些来自 C11 和 C17 标准的改进,以及一些全新的功能。例如,C20 引入了对 Unicode 字符串和标识符的支持、新的数学函数、对泛型编程的支持等。C20 标准为 C 语言带来了一些新的功能和改进,使得 C 语言能够更好地满足现代编程的需求。但是尚未得到广泛的应用。

二、C语言编译器

        C语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于CPU,C语言代码就是天书,根本不认识,CPU只认识几百个二进制形式的指令。

        这就需要一个工具,将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序;这个工具是一个特殊的软件,叫做编译器(Compiler)。

1、GNU Compiler Collection (GCC):

· 特点:开源、跨平台、功能强大。

· 支持平台:几乎所有主流操作系统和架构。

· 优点:优化性能、广泛支持C语言标准、支持多种语言(如C、C++、Fortran等)。

· 缺点:有时可能产生较大的可执行文件。

2、Clang:

· 特点:由LLVM项目开发,开源、跨平台。

· 支持平台:几乎所有主流操作系统和架构。

· 优点:快速编译、良好的错误信息提示、模块化设计。

· 缺点:某些特定情况下可能不如GCC的优化。

3、Microsoft Visual C++ (MSVC):

· 特点:由微软开发,用于Windows平台。

· 支持平台:Windows。

· 优点:与Windows平台紧密集成、良好的集成开发环境(如Visual Studio)。

· 缺点:对于跨平台开发支持相对较弱。

· 我们使用的VS2022就是集成了MSVC编译器。

4、Intel C Compiler (ICC):

· 特点:由英特尔开发,专注于英特尔处理器架构的优化。

· 支持平台:主要用于x86架构。

· 优点:针对英特尔处理器提供最佳的优化。

· 缺点:不如GCC和Clang流行,对于非英特尔平台支持有限。

5、TinyCC (TCC):

· 特点:轻量级、快速、适用于嵌入式系统和特定需求。

· 支持平台:多平台支持。

· 优点:速度快、适合嵌入式系统和特定领域。

· 缺点:对C标准的支持可能不如其他编译器完备。

6、Pelles C:

· 特点:用于Windows平台的免费C编译器。

· 支持平台:Windows。

· 优点:轻量级、易于使用、适合学习和小型项目。

· 缺点:可能不适用于大型项目或需要高性能优化的场景。

7、Digital Mars C/C++ (DMC):

· 特点:免费、用于Windows平台。

· 支持平台:Windows。

· 优点:简单易用、速度快。

· 缺点:更新较慢,对于最新C语言标准的支持可能不及其他编译器。

8、Open Watcom C/C++:

· 特点:免费、跨平台。

· 支持平台:Windows、Linux等。

· 优点:支持DOS和Windows平台、适合于嵌入式系统和旧式系统。

· 缺点:对于最新的C语言标准支持可能不够完备。

        理论上,如果编译器都严格遵循C语言标准并正确实现了标准规范,那么不同编译器编译出的相同C语言代码应该产生相同的程序运行效果。

        在实际情况下,不同的编译器可能存在以下情况,导致编译出的程序运行效果有所不同。这是由于:编译器实现的差异;编译器优化级别不同;平台相关性;编译器扩展和特性。

本节习题

1、在以下列出的C语言编译器中,哪一个Microsoft Visual C++ 中的默认编译器?

(A) GCC

(B)Clang

(C)MSVC

(D)TinyCC (TCC)

· 参考答案:C

· 题目解析:GCC更广泛用于Linux操作系统,Clang更广泛用于ios操作系统。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值