c 语言学前必看第一课

发布 2020-09-14 15:45:28 阅读 1997

c语言。

c语言是一门通用计算机编程语言,应用广泛。c语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管c语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的c语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称mcu)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的c语言语法产生差异,由美国国家标准局为c语言订定了一套完整的国际标准语法,称为ansi c,作为c语言最初的标准。[1]

c语言之所以命名为c,是因为 c语言源自ken thompson发明的b语言,而 b语言则源自bcpl语言。

2023年,剑桥大学的martin richards对cpl语言进行了简化,于是产生了bcpl(basic combined programming language)语言。

c语言宣传图

20世纪60年代,美国at&t公司贝尔实验室(at&t bell laboratory)的研究员ken thompson闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——space tr**el。他背着老板,找到了台空闲的机器——pdp-7。但这台机器没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为pdp-7开发操作系统。

后来,这个操作系统被命名为——unix。

2023年,美国贝尔实验室的 ken thompson,以bcpl语言为基础,设计出很简单且很接近硬件的b语言(取bcpl的首字母)。并且他用b语言写了第一个unix操作系统。

2023年,同样酷爱space tr**el的dennis 为了能早点儿玩上游戏,加入了thompson的开发项目,合作开发unix。他的主要工作是改造b语言,使其更成熟。[2]

2023年,美国贝尔实验室的 在b语言的基础上最终设计出了一种新的语言,他取了bcpl的第二个字母作为这种语言的名字,这就是c语言。

2023年初,c语言的主体完成。thompson和ritchie迫不及待地开始用它完全重写了unix。此时,编程的乐趣使他们已经完全忘记了那个"space tr**el",一门心思地投入到了unix和c语言的开发中。

随着unix的发展,c语言自身也在不断地完善。直到今天,各种版本的unix内核和周边工具仍然使用c语言作为最主要的开发语言,其中还有不少继承thompson和ritchie之手的**。[2]

在开发中,他们还考虑把unix移植到其他类型的计算机上使用。c语言强大的移植性(portability)在此显现。机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在alpha,sparc和arm等机器上运行。

而c语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的c语言编译器和库,然后将c源**编译、连接成目标二进制文件之后即可运行。[2]

2023年,dennis 发表了不依赖于具体机器系统的c语言编译文本《可移植的c语言编译程序》。[3]

c语言继续发展,在2023年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立c标准委员会,建立c语言的标准。委员会由硬件厂商,编译器及其他软件工具生产商,软件设计师,顾问,学术界人士,c语言作者和应用程序员组成。2023年,ansi发布了第一个完整的c语言标准——ansi x3.

159—1989,简称“c89”,不过人们也习惯称其为“ansi c”。c89在2023年被国际标准组织iso(international organization for standardization)一字不改地采纳,iso官方给予的名称为:iso/iec 9899,所以iso/iec9899:

1990也通常被简称为“c90”。2023年,在做了一些必要的修正和完善后,iso发布了新的c语言标准,命名为iso/iec 9899:1999,简称“c99”。

[2] 在2023年12月8日,iso又正式发布了新的标准,称为iso/iec9899: 2011,简称为“c11”。

gcc,gnu组织开发的开源免费的编译器。

mingw,windows操作系统下的gcc

clang,开源的bsd协议的基于llvm的编译器。

visual c++ vc++自带的编译器。

codeblocks,开源免费的c/c++ ide

codelite,开源、跨平台的c/c++集成开发环境。

orwell dev-c++,可移植的c/c++ide

c-free

light table

visual stdio系列。

下面是一个在标准输出设备 (stdout) 上,印出 "hello, world!" 字符串的简单程序。类似的程序,通常作为初学编程语言时的第一个程序:

起初,c语言没有官方标准。2023年由美国**电报公司(at&t)贝尔实验室正式发表了c语言。布莱恩·柯林汉(brian kernighan)和丹尼斯·里奇(dennis ritchie)出版了一本书,名叫《the c programming language》。

这本书被 c语言开发者们称为k&r,很多年来被当作 c语言的非正式的标准说明。人们称这个版本的 c语言为k&r c。[3]

k&r c主要介绍了以下特色:

结构体(struct)类型。

长整数(long int)类型。

无符号整数(unsigned int)类型。

把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = 10还是i =-10,使得处理上产生混淆。

即使在后来ansi c标准被提出的许多年后,k&r c仍然是许多编译器的最准要求,许多老旧的编译器仍然运行k&r c的标准。

1970到80年代,c语言被广泛应用,从大型主机到小型微机,也衍生了c语言的很多不同版本。

2023年,美国国家标准协会(ansi)成立了一个委员会x3j11,来制定 c语言标准。[4]

2023年,美国国家标准协会(ansi)通过了c语言标准,被称为ansi x3.159-1989 "programming language c"。因为这个标准是2023年通过的,所以一般简称c89标准。

有些人也简称ansi c,因为这个标准是美国国家标准协会(ansi)发布的。

2023年,国际标准化组织(iso)和国际电工委员会(iec)把c89标准定为c语言的国际标准,命名为iso/iec 9899:1990 - programming languages --c[5] 。因为此标准是在2023年发布的,所以有些人把简称作c90标准。

不过大多数人依然称之为c89标准,因为此标准与ansi c89标准完全等同。

2023年,国际标准化组织(iso)和国际电工委员会(iec)发布了c89标准修订版,名叫iso/iec 9899:1990/cor 1:1994[6] ,有些人简称为c94标准。

2023年,国际标准化组织(iso)和国际电工委员会(iec)再次发布了c89标准修订版,名叫iso/iec 9899:1990/amd 1:1995 - c integrity[7] ,有些人简称为c95标准。

2023年1月,国际标准化组织(iso)和国际电工委员会(iec)发布了c语言的新标准,名叫iso/iec 9899:1999 - programming languages --c [8] ,简称c99标准。这是c语言的第二个官方标准。

在c99中包括的特性有:

增加了对编译器的限制,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节(extern 要求支持到 31)。

增强了预处理功能。例如:

o 宏支持取可变参数 #define macro(..va_args__

o 使用宏的时候,允许省略参数,被省略的参数会被扩展成空串。

o 支持 //开头的单行注释(这个特性实际上在c89的很多编译器上已经被支持了)

增加了新关键字 restrict, inline, _complex, _imaginary, _bool

o 支持 long long, long double _complex, float _complex 等类型。

支持不定长的数组,即数组长度可以在运行时决定,比如利用变量作为数组长度。声明时使用 int a[var] 的形式。不过考虑到效率和实现,不定长数组不能用在全局,或 struct 与 union 里。

变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。

允许采用(type_name) 类似于 c++ 的构造函数的形式构造匿名的结构体。

复合字面量:初始化结构的时候允许对特定的元素赋值,形式为:

struct test foo 1].a = 2 };

struct test foo = 3,4 是对 .c,.d 赋值的。

格式化字符串中,利用 \u 支持 unicode 的字符。

支持 16 进制的浮点数的描述。

printf scanf 的格式化串增加了对 long long int 类型的支持。

浮点数的内部数据描述支持了新标准,可以使用 #pragma 编译器指令指定。

除了已有的 __line__ file__ 以外,增加了 __func__ 得到当前的函数名。

允许编译器化简非常数的表达式。

职场语言第一课

职场语言第一课 从称呼谈起。与人谈话,称呼是必不可少的。有礼和得体的称呼会帮助我们达到良好的效果。那么,什么样的称呼是 有礼 和 得体 呢?在日常的生活当中,称呼是以亲切 自然 合理为第一原则。因此,中国北方大部分地区普遍有用仿亲属称谓的方式称呼非亲属的情况。如果关系较好,称呼老李,小李之类的也并不...

入学前的第一课

对即将幼儿园毕业的小朋友来讲,跨进小学大门是他们人生的一个转折点。我的母校 乌鲁木奇南路幼儿园,邀请我去为这些毕业生上一堂名为 怎样去做一名合格的小学生 的课。我欣然地答应了,并认真备了课。我等呀等终于到了那天,老师让我为大班的小朋友上课,当我刚刚跨进教室时,一双双好奇的眼睛惊讶地望着我,仿佛在想这...

学前教育开学第一课

开学第一课。教学内容。分享 北师大版一年级数学 下册 教学内容。教学目标。1 通过与学生交流 北师大版一年级数学 下册 了解本学期数学学习的课程内容 课程目标以及学习方法。2 通过了解这学期要达到的目标,鼓励并激发学生自主学习的主动性。3 通过对学习方法的交流和渗透,促进学生更好 更有效的学习。教学...