1c语言学前必看第一课课案.docx
- 文档编号:2949470
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:18
- 大小:68.54KB
1c语言学前必看第一课课案.docx
《1c语言学前必看第一课课案.docx》由会员分享,可在线阅读,更多相关《1c语言学前必看第一课课案.docx(18页珍藏版)》请在冰豆网上搜索。
1c语言学前必看第一课课案
C语言
C语言是一门通用计算机编程语言,应用广泛。
C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSIC,作为C语言最初的标准。
[1]
发展历史
C语言之所以命名为C,是因为C语言源自KenThompson发明的B语言,而B语言则源自BCPL语言。
1967年,剑桥大学的MartinRichards对CPL语言进行了简化,于是产生了BCPL(BasicCombinedProgrammingLanguage)语言。
c语言宣传图
20世纪60年代,美国AT&T公司贝尔实验室(AT&TBellLaboratory)的研究员KenThompson闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——SpaceTravel。
他背着老板,找到了台空闲的机器——PDP-7。
但这台机器没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为PDP-7开发操作系统。
后来,这个操作系统被命名为——UNIX。
1970年,美国贝尔实验室的KenThompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。
并且他用B语言写了第一个UNIX操作系统。
1971年,同样酷爱SpaceTravel的DennisM.Ritchie为了能早点儿玩上游戏,加入了Thompson的开发项目,合作开发UNIX。
他的主要工作是改造B语言,使其更成熟。
[2]
1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1973年初,C语言的主体完成。
Thompson和Ritchie迫不及待地开始用它完全重写了UNIX。
此时,编程的乐趣使他们已经完全忘记了那个"SpaceTravel",一门心思地投入到了UNIX和C语言的开发中。
随着UNIX的发展,C语言自身也在不断地完善。
直到今天,各种版本的UNIX内核和周边工具仍然使用C语言作为最主要的开发语言,其中还有不少继承Thompson和Ritchie之手的代码。
[2]
在开发中,他们还考虑把UNIX移植到其他类型的计算机上使用。
C语言强大的移植性(Portability)在此显现。
机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在Alpha,SPARC和ARM等机器上运行。
而C语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。
[2]
1977年,DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
[3]
C语言继续发展,在1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。
委员会由硬件厂商,编译器及其他软件工具生产商,软件设计师,顾问,学术界人士,C语言作者和应用程序员组成。
1989年,ANSI发布了第一个完整的C语言标准——ANSIX3.159—1989,简称“C89”,不过人们也习惯称其为“ANSIC”。
C89在1990年被国际标准组织ISO(InternationalOrganizationforStandardization)一字不改地采纳,ISO官方给予的名称为:
ISO/IEC9899,所以ISO/IEC9899:
1990也通常被简称为“C90”。
1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC9899:
1999,简称“C99”。
[2] 在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899:
2011,简称为“C11”。
编程开发
c语言编译器
GCC,GNU组织开发的开源免费的编译器
MinGW,Windows操作系统下的GCC
Clang,开源的BSD协议的基于LLVM的编译器
VisualC++:
:
cl.exe,MicrosoftVC++自带的编译器
c语言集成开发环境(IDE)
CodeBlocks,开源免费的C/C++IDE
CodeLite,开源、跨平台的C/C++集成开发环境
OrwellDev-C++,可移植的C/C++IDE
C-Free
LightTable
VisualStdio系列
c语言HelloWorld
下面是一个在标准输出设备(stdout)上,印出"Hello,world!
"字符串的简单程序。
类似的程序,通常作为初学编程语言时的第一个程序:
?
1
2
3
4
5
6
7
#include
int main(void)
{
printf("Hello, world!
");
return 0;
}
语言标准
c语言K&RC
起初,C语言没有官方标准。
1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。
布莱恩·柯林汉(BrianKernighan)和丹尼斯·里奇(DennisRitchie)出版了一本书,名叫《TheCProgrammingLanguage》。
这本书被C语言开发者们称为K&R,很多年来被当作C语言的非正式的标准说明。
人们称这个版本的C语言为K&RC。
[3]
K&RC主要介绍了以下特色:
结构体(struct)类型
长整数(longint)类型
无符号整数(unsignedint)类型
把运算符=+和=-改为+=和-=。
因为=+和=-会使得编译器不知道使用者要处理i=-10还是i=-10,使得处理上产生混淆。
即使在后来ANSIC标准被提出的许多年后,K&RC仍然是许多编译器的最准要求,许多老旧的编译器仍然运行K&RC的标准。
c语言ANSIC/C89标准
1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。
1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定C语言标准。
[4]
1989年,美国国家标准协会(ANSI)通过了C语言标准,被称为ANSIX3.159-1989"ProgrammingLanguageC"。
因为这个标准是1989年通过的,所以一般简称C89标准。
有些人也简称ANSIC,因为这个标准是美国国家标准协会(ANSI)发布的。
1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,命名为ISO/IEC9899:
1990-Programminglanguages--C[5] 。
因为此标准是在1990年发布的,所以有些人把简称作C90标准。
不过大多数人依然称之为C89标准,因为此标准与ANSIC89标准完全等同。
1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,名叫ISO/IEC9899:
1990/Cor1:
1994[6] ,有些人简称为C94标准。
1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,名叫ISO/IEC9899:
1990/Amd1:
1995-CIntegrity[7] ,有些人简称为C95标准。
c语言C99标准
1999年1月,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C语言的新标准,名叫ISO/IEC9899:
1999-Programminglanguages--C[8] ,简称C99标准。
这是C语言的第二个官方标准。
在C99中包括的特性有:
∙增加了对编译器的限制,比如源程序每行要求至少支持到4095字节,变量名函数名的要求支持到63字节(extern要求支持到31)。
∙增强了预处理功能。
例如:
o宏支持取可变参数#defineMacro(...)__VA_ARGS__
o使用宏的时候,允许省略参数,被省略的参数会被扩展成空串。
o支持//开头的单行注释(这个特性实际上在C89的很多编译器上已经被支持了)
∙增加了新关键字restrict,inline,_Complex,_Imaginary,_Bool
o支持longlong,longdouble_Complex,float_Complex等类型
∙支持不定长的数组,即数组长度可以在运行时决定,比如利用变量作为数组长度。
声明时使用inta[var]的形式。
不过考虑到效率和实现,不定长数组不能用在全局,或struct与union里。
∙变量声明不必放在语句块的开头,for语句提倡写成for(inti=0;i<100;++i)的形式,即i只在for语句块内部有效。
∙允许采用(type_name){xx,xx,xx}类似于C++的构造函数的形式构造匿名的结构体。
∙复合字面量:
初始化结构的时候允许对特定的元素赋值,形式为:
structtest{inta[3],b;}foo[]={[0].a={1},[1].a=2};
∙structtest{inta,b,c,d;}foo={.a=1,.c=3,4,.b=5};//3,4是对.c,.d赋值的
∙格式化字符串中,利用\u支持unicode的字符。
∙支持16进制的浮点数的描述。
∙printfscanf的格式化串增加了对longlongint类型的支持。
∙浮点数的内部数据描述支持了新标准,可以使用#pragma编译器指令指定。
∙除了已有的__line____file__以外,增加了__func__得到当前的函数名。
∙允许编译器化简非常数的表达式。
∙修改了/%处理负数时的定义,这样可以给出明确的结果,例如在C89中-22/7=-3,-22%7=-1,也可以-22/7=-4,-22%7=6。
而C99中明确为-22/7=-3,-22%7=-1,只有一种结果。
∙取消了函数返回类型默认为int的规定。
∙允许struct定义的最后一个数组不指定其长度,写做[](flexiblearraymember)。
∙constconstinti将被当作constinti处理。
∙增加和修改了一些标准头文件,比如定义bool的
在
里增加了structtmx,对structtm做了扩展。
∙输入输出对宽字符以及长整数等做了相应的支持。
GCC和其它一些商业编译器支持C99的大部分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1c 语言学前必看第一课课案 语言 学前 第一 课课案