版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章C语言基本语法
#include<reg52.h>
//包含文件
#include<stdio.h>
voidmain(void)
//主函数
{
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1;
//此行及以上3行为PRINTF函数所必须
printf(“HelloIamKEIL.\n”);
//打印程序执行的信息
printf(“Iwillbeyourfriend.\n”);
while(1);
}3.1C语言的标识符和关键字用来标识变量名、符号常量名、函数名、数组名、类型名等的有效字符序列称为标识符。简单地说,标识符就是一个名字。C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,要注意的是C语言中大写字母与小写字母被认为是两个不同的字符例:Charchar
PIpiabc123_abc123123abcabc_1233.2数据类型数据类型——数据的不同格式叫做数据类型。数据结构——数据按一定的数据类型进行的排列、组合及架构称为数据结构。C51提供的数据结构是以数据类型的形式出现的,C51的数据类型如下所示:位型(bit)字浮型(char)整型(int)基本类型:长整型(long)浮点型(float)双精度浮点型(double)数据类型:数组类型(array)构造类型:结构体类型(struct)共用体(union)枚举(enum)指针类型:空类型:数据——具有一定格式的数字或数值叫数据
收据类型长度/bit长度/Byte值域bitunsignedcharsignedcharunsignedintsignedintunsignedlongsignedlongfloatuouble一般指针18816163232326424…1122444830,10~255-128~1270~65535-32768~327670~4294967295-2147483648~21474836471.76E-38~3.40E+38(6位数字)1.76E-38~3.40E+38(10位数字)存储空间0~655353.2.1常量常量——在程序运行的过程中,其值不能改变的量称为常量。
常量的数据类型只有整型、浮点型、字符型、字符串型和位标量。
#defineCONST60#definePI3.1415926好处:1、见名知意2、改一全变转义字符含义码(16进制数形式)\o空字符(NULL)0x00\n换行符(LF)0x0A\r回车符(CR)0x0D\t水平制表符(HT)0x09\b退格符(BS)0x08\f换页符(FF)0x0C\’单引符0x27\”双引符0x22\\反斜杠0x5C 字符型常量\o\n\r\t\b\\字符串常量“test”“\\abc\\”3.2.2变量
变量——在程序运行中,其值可以改变的量称为变量。一个变量主要由两部分构成:一个是变量名,一个是变量值。每个变量都有一个变量名,在内存中占据一定的存储单元(地址),并在该单元中存放该变量的值。1.位变量(bit)——变量的类型是位,位变量的值可以是1(true)或0(false)。
bitflag;2.字符变量(char)——字符变量的长度为1字节(Byte)即8位。3.整型变量(int)——整型变量的长度为16位,长度为两个字节,用于存放一个双字节数据。4.long长整型变量long长整型长度为四个字节,用于存放一个四字节数据。5.浮点型变量(float)——浮点型变量为32位,占4字节。6.*指针型变量指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。7.sfr
特殊功能寄存器sfr
也是一种扩充数据类型,点用一个内存单元,值域为0~255。8.sfr1616位特殊功能寄存器sfr16占用两个内存单元,值域为0~65535。
9.sbit
可寻址位sbit
同位是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。Sbitflag=0x20^1;Sbitflag=wo^1;Sbitflag=0x00h;自动变量(auto)内部变量(inner)静态变量(static)寄存器变量(register)变量全局变量(global)外部变量(extern)静态变量(static)3.2.3变量的存储种类按变量的有效作用范围可以将其划分为局部变量和全局变量;还可以按变量的的存储方式为其划分存储种类。在C语言中变量有四种存储种类,即自动(auto)、外部(extern)、静态(static)和寄存器(register)。这四种存储种类与全局变量和局部变量之间的关系如图3.2所示定义一个变量时,在变量名前面加上存储种类说明符“auto”,即将该变量定义为自动变量。自动变量是C语言中使用最为广泛的一类变量。autointhigh;inthigh;1、自动变量(auto)
自动变量的作用范围在定义它的函数体或复合语句内部,只有在定义它的函数内被调用,或是定义它的复合语句被执行时,编译器才为其分配内存空间,开始其生存期。当函数调用结束返回,或复合语句执行结束时,自动变量所占用的内存空间就被释放,变量的值当然也就不复存在,其生存期结束。当函数被再次调用或复合语句被再次执行,编译器又会为它们内部的自动变量重新分配内存空间,但它不会保留上次运行时的值,而必须被重新赋值。因此自动变量始终是相对于函数或复合语句的局部变量。2、外部变量(extern)
使用存储种类说明符“extern”定义的变量称为外部变量。按照缺省规则,凡是在所有函数之前,在函数外部定义的变量都是外部变量,定义时可以不写extern说明符。在一个函数体内说明一个已在该函数体外或别的程序模块文件中定义过的外部变量时,则必须要使用extern说明符。个外部变量被定义之后,它就被分配了固定的内存空间。外部变量的生存期为程序的整个执行时间,即在程序的执行期间外部变量可被随意使用,当一条复合语句执行完毕或是从某一个函数返回时,外部变量的存储空间并不被释放,其值也仍然保留。因此外部变量属于全局变量。例4-23、静态变量(static)使用存储种类说明符“static”定义的变量称为静态变量。在例4-2的模块2程序文件中使用了一个静态变量:staticinta=5;由于这个变量是在函数funl()内部定义的,因此称为内部静态变量或局部静态变量。局部静态变量不象自动变量那样只有当函数调用它时才存在,退出函数后它就消失,局部静态变量始终都是存在的,但只能在定义它的函数内部进行访问,退出函数之后,变量的值仍然保持,但不能进行访问。还有一种全局静态变量,它是在函数外部被定义的,作用范围从它的定义点开始,一直到程序结束。当一个C语言程序由若干个模块文件所组成时,全局静态变量始终存在,但它共能在被定义的模块文件中访问,其数据值可为该文件内的所有函数共享,退出该文件后,虽然变量的值仍然保持着,但不能被其它模块文件访问。局部静态变量是一种在两次函数调用之间仍能保持其值的局部变量。有些程序需要在多次调用之间仍然保持变量的值,使用自动变量无法实现这一点,使用全局变量有时又会带来意外的副作用,这时就可采用局部静态变量。为了提高程序的执行效率,C语言允许将一些使用频率最高的那些变量,定义为能够直接使用硬件寄存器的所谓寄存器变量。定义一个变量时在变量名前而冠以存储种类符号“register”即将该变量定义成为了寄存器变量。寄存器变量可以被认为是自动变量的一种,它的有效作用范围也与自动变量相同。由于计算机中的寄存器是有限的,不能将所有变量都定义成寄存器变量。通常在程序中定义的寄存器变量时只是给编译器一个建议,该变量是否能真正成为寄存器变量,要由编译器根据实际情况来确定。另一方面,c51编译器能够识别程序中使用频率最高的变量,在可能的情况下,即使程序中并未将该变量定义为寄存器变量,编译器也会自动将其作为寄存器变量处理。4、寄存器变量(register)3.2.4变量及其存储模式一个变量应该有一个名字,在内存中占据一定的存储单元,在该存储单元中存放变量的值。在C语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”。在C51中对变量进行定义的格式如下:[存储种类]数据类型[存储器类型]变量名表存储模式如下:存储模式决定了默认的存储器类型,此存储器类型将应用于函数参数,局部变量和定义时未包含存储器类型的变量。你可以在命令行用SMALL,COMPACT和LARGE参数定义存储模式。定义变量时,使用存储器类型显式定义将屏蔽默认存储器类型。1.小(SMALL)模式所有变量都默认在8051的内部数据存储器中。这和用data显式定义变量起到相同的作用2.紧凑(COMPACT)模式此模式中,所有变量都默认在8051的外部数据存储器的一页中。3.大(LARGE)模式在大模式下,所有的变量都默认在外部存储器中(xdata)。需要特别指出的是,变量的存储种类与存储器类型是完全无关的。为了能够直接访问这些特殊功能寄存器,C51编译器扩充了关键字sfr和sfrl6,利用这种扩充关键字可以在C语言源程序中直接对805l单片机的特殊功能寄存器进行定义。定义方法如下:
sfr特殊功能寄存器名=地址常数;例如:sfrP0=0x80;/*定义I/O口P0,其地址为80H*/3.3用typedef重新定义数据类型在C语言程序中除了可以采用上面所介绍的数据类型之外,用户还可以根据自己的需要对数据类型重新定义。重新定义时需用到关键字typedef,定义方法如下:
typedef
已有数据类型新的数据类型名;其中“已有的数据类型”是指上面所介绍的C语言中所有的数据类型,包括结构、指针和数组等,“新的数据类型名”可按用户自己的习惯或根据任务需要决定。关键字typedef的作用只是将C语言中已有的数据类型作了置换,因此可用置换后的新数据类型名来进行变量的定义。如:typedefunsignedcharuchar;typedefchar*POINTER;POINTERpoint;熟悉数据类型的存储结构
3.4运算符与表达式运算符就是完成某种特定运算的符号。运算符按其在表达式中所起的作用,可分为赋值运算符、算术运算符、增量与减量运算符、关系运算符、逻辑运算符、位运算符、复合赋值运算符、逗号运算符、条件运算符、指针和地址运算符、强制类型转换运算符和sizeof运算符等。运算符按其在表达式中与运算对象的关系可分为单目运算符,双目运算符和三目运算符。单目就是指需要有一个运算对象,双目就要求有两个运算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式子。C是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句1、赋值运算符:变量=表达式;2.算术运算符+加或取正值运算符-减或取负值运算符*乘运算符/除运算符%取余运算符3.增量和减量运算符十十增量运算符(++i,i++)—一减量运算符(一一j,j一一)4.关系运算符“<”(小于)、“<=”(小于等于)、“>”(大于)、“>=(大于等于)”、“==”(等于)和“!=”(不等于)。5.逻辑运算符“&&”(逻辑与)、“||”(逻辑或)和“!”(逻辑非)。6.位运算符~按位取反、&按位与、|按位或、^按位异或、<<左移、>>右移7.复合赋值运算符
+=加法赋值>>=右移位赋值
-=减法赋值&=逻辑与赋值*=乘法赋值|=逻辑或赋值
/=除法赋值^=逻辑异或赋值
%=取模赋值-=逻辑非赋值
<<=左移位赋值8.逗号运算符在C语言中逗号是一种特殊的运算符,也就是逗号运算符,可以用它将两个或多个表达式连接起来,形成逗号表达式。逗号表达式的一般形式为:
表达式1,表达式2,表达式3……表达式n用逗号运算符组成的表达式在程序运行时,是从左到右计算出各个表达式的值,而整个用逗号运算符组成的表达式的值等于最右边表达式的值,就是"表达式n"的值。9.条件运算符条件运算符“?:”是C语言中唯一的一个三目运算符.条件表达式的一般形式如下:逻辑表达式?表达式1:表达式2条件运算符的作用简单来说就是根据逻辑表达式的值选择使用表达式的值。当逻辑表达式的值为真时(非0值)时,整个表达式的值为表达式1的值;当逻辑表达式的值为假(值为0)时,整个表达式的值为表达式2的值。
*取内容;
&取地址变量=*指针变量指针变量=&目标变量10.指针与地址运算符:
C语言提供了两个专门的运算符:
取内容运算是将指针变量所指向的目标变量的值赋给左边的变量;取地址运算是将目标变量的地址赋给左边的变量。11.强制类型转换运算符C语言中的“()”就是强制类型转换运算符,它的作用是将表达式或变量的类型强制转换成为所指定的类型。强制类型转换运算符的一般使用形式为:(类型)=表达式显式类型转换在给指针变量赋值时特别有用。例如,预先在8051单片机外部数据存储器(xdata)中定义了一个字符型指针变量px,如果想给这个指针变量赋一初值oxB000,可以写成:px=(charxdata*)oxB00;这种方法特别适合于用标识符来存取绝对地址。12.sizeof
运算符C语言提供了一种用于求取数据类型、变量以及表达式的字节数的运算符:sizeof,该运算符的一般使用形式为:Sizeof(表达式)或sizeof(数据类型)
应该注意的是,sizeof是一种特殊的运算符,不要错误地认为它是一个函数。实际上,字节数的计算在程序编译时就完成了,而不是在程序执行的过程中才计算出来的。3.5C程序设计的基本语句3.5.1表达式语句C语言是一种结构化的程序设计语言。C语言提供了相当丰富的程序控制语句。表达式语句是最基本的一种语句。在表达式后面加入分号“;”就构成表达式语句。在C语言中有一个特殊的表达式语句,称为空语句,它仅仅是由一个分号“;”组成。3.5.2复合语句{局部变量定义;语句1;语句2;语句n;}由若干条语句组合而成的语句就叫复合语句。复合语句之间用{}分隔,而它内部的各条语句还是需要以分号“;”结束。复合语句的一般形式为:复合语句是允许嵌套的,也是就是在{}中的{}也是复合语句。复合语句在程序运行时,{}中的各行单语句是依次顺序执行的。以C语言中可以将复合语句视为一条单语句,也就是说在语法上等同于一条单语句。3.5.3条件语句1.if(条件表达式)语句当条件表达式的结果为真时,就执行语句,否则就跳过。
2.if(条件表达式)语句1else语句2当条件表达式成立时,就执行语句1,否则就执行语句23.if(条件表达式1)语句1elseif(条件表达式2)语句2elseif(条件表达式3)语句3elseif(条件表达式m)语句nelse语句m条件语句又被称为分支语句,其关键字是由if构成。C语言提供3种形式的条件语句:3.5.4开关语句switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式3:语句3;break;case常量表达式n:语句n;break;default:语句}开关语句是实现多方向条件分支的语句,其关键字是switch.它的一般形式如下:switch(表达式)运行中switch后面的表达式的值将会做为条件,与case后面的各个常量表达式的值相对比,如果相等时则执行后面的语句,再执行break(间断语句)语句,跳出switch语句。如果case没有和条件相等的值时就执行default后的语句。当要求没有符合的条件时不做任何处理,则可以不写default语句。3.5.5循环语句1.while语句;循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操作。在C语言中构成循环控制的语句有while,do-while,for和goto语句。一般形式如下:While语句用到实现“当型”循环结构,其一般形式如下:while(表达式)语句;当表达式为非0值(真)时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。2.do-while语句;do-while语句用来实现“直到型”循环,特点是先执行循环体,然后判断循环条件是否成立。其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YY/T 1833.5-2024人工智能医疗器械质量要求和评价第5部分:预训练模型
- 贵州财经大学《创业团队管理》2023-2024学年第一学期期末试卷
- 2025年甘肃省建筑安全员C证考试题库
- 2025年河南省安全员《C证》考试题库
- 贵阳学院《山水写生》2023-2024学年第一学期期末试卷
- 广州应用科技学院《游戏制作与开发》2023-2024学年第一学期期末试卷
- 广州铁路职业技术学院《建筑力学(上)》2023-2024学年第一学期期末试卷
- 2025四川省安全员-C证考试(专职安全员)题库附答案
- 2025云南省建筑安全员《C证》考试题库及答案
- 6.4.2向量在物理中的应用举例【超级课堂】2022-2023学年高一数学教材配套教学精-品课件+分层练习人教A版2019必修第二册
- 2024年电商平台入驻服务合同
- 2024年度政府采购代理服务合同-医疗卫生设备采购项目3篇
- GJB9001C版标准培训课件
- 船舶防火与灭火(课件)
- 七、监理工作重点、难点分析及对策
- 面膜中蓝铜肽经皮渗透性和改善皮肤衰老作用研究
- 湖北省荆州市八县市2023-2024学年高一上学期1月期末考试 化学 含解析
- 声光影的内心感动:电影视听语言学习通超星期末考试答案章节答案2024年
- 道路下穿高速公路安全安全评价
- 紧密型县域医共体信息化建设指南及评价标准
- 盘拉机操作手册新
评论
0/150
提交评论