书签 分享 收藏 举报 版权申诉 / 78
上传文档赚钱

类型第七课-C51语言的结构和特点课件.ppt

  • 上传人(卖家):ziliao2023
  • 文档编号:6043448
  • 上传时间:2023-05-23
  • 格式:PPT
  • 页数:78
  • 大小:393KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第七课-C51语言的结构和特点课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第七 C51 语言 结构 特点 课件
    资源描述:

    1、单片机单片机C51语言语言C51特点nC语言作为一种非常方便的结构化语言而得到广泛语言作为一种非常方便的结构化语言而得到广泛的支持,国内最通用的是的支持,国内最通用的是Keil C51。nC语言程序本身不依赖于机器硬件系统,基本上不语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。作修改就可将程序从不同的单片机中移植过来。nC提供了丰富的数据类型、很多数学函数并支持浮提供了丰富的数据类型、很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。程序可读性和可维护性。n与与汇编语言相比,汇编语

    2、言相比,C语言的优点如下:语言的优点如下:对单片机的指令系统不要求了解,仅要求对对单片机的指令系统不要求了解,仅要求对8051 的的存贮器结构有初步了解;存贮器结构有初步了解;寄存器分配、不同存贮器的寻址及数据类型等细节可寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;由编译器管理;程序有规范的结构,可分成不同的函数,这种方式可程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;使程序结构化;具有将可变的选择与特殊操作组合在一起的能力,改具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;善了程序的可读性;提供的库包含许多标准子程序,具有较强的数据处理能力;提供

    3、的库包含许多标准子程序,具有较强的数据处理能力;由于具有方便的模块化编程技术,使已编好程序可容由于具有方便的模块化编程技术,使已编好程序可容易地移植。易地移植。C51-1:C51基本结构基本结构n怎样学习C51?n/功能:控制八个信号灯闪烁程序功能:控制八个信号灯闪烁程序n#include/定义了定义了MCS-52单片机的特殊功能寄存器单片机的特殊功能寄存器nvoid delay(unsigned char i);/延时函数声明延时函数声明nvoid main()/主函数主函数nn while(1)n P1=0 x00;/点亮八个点亮八个LEDn delay(200);/延时延时n P1=0

    4、xff;/熄灭八个熄灭八个LEDn delay(200);/延时延时n nn/函数名:函数名:delayn/函数功能:实现软件延时函数功能:实现软件延时n/形式参数:形式参数:unsigned char i;nvoid delay(unsigned char i)/延时函延时函数,无符号字符型变量数,无符号字符型变量i为形式参数为形式参数nn unsigned char j,k;/定义无符号字符型变量定义无符号字符型变量j和和kn for(k=0;ki;k+)/双重双重for循环语句实现软件延时循环语句实现软件延时n for(j=0;j255;j+);n头文件(一个或若干个)头文件(一个或若干

    5、个)主函数主函数n 程序的入口程序的入口 函数名固定,且与书写的位置无关函数名固定,且与书写的位置无关n 有且仅有一个有且仅有一个函数声明或定义函数声明或定义n 库函数或用户自定义的函数库函数或用户自定义的函数n 可以有若干个可以有若干个C51程序大体上是程序大体上是若干函数的集合若干函数的集合C程序基本结构程序基本结构n一个一个C语言源程序是由一个或若干个函数语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。组成,每一个函数完成相对独立的功能。n每个每个C程序都必须有(且仅有)一个主函程序都必须有(且仅有)一个主函数数main(),程序的执行总是从主函数开,程序的执行总是从主

    6、函数开始,调用其他函数后返回主函数始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函不管函数的排列顺序如何,最后在主函数中结束整个程序。数中结束整个程序。C51编程要点编程要点nC语言程序中可以有预处理命令,语言程序中可以有预处理命令,预处理命令通常放在源程序的最前预处理命令通常放在源程序的最前面。面。nC语言程序使用语言程序使用“;”作为语句的作为语句的结束符,一条语句可以多行书写,结束符,一条语句可以多行书写,也可以一行书写多条语句。也可以一行书写多条语句。nC语言区分大小写。语言区分大小写。n用用/*/或或/注释。注释。Main主函数名;主函数名;void函数类

    7、型,空类型函数类型,空类型无返回值;()内为形参,无返回值;()内为形参,内为函内为函数体数体 C语言编程的三大要素语言编程的三大要素n 数据数据数据类型、数据结构、存储类型数据类型、数据结构、存储类型n运算运算算术运算、关系运算、逻辑运算、位操作算术运算、关系运算、逻辑运算、位操作n 控制控制顺序结构、选择结构、循环结构、函数顺序结构、选择结构、循环结构、函数C语言标识符 nC语言中语言中由由字母字母、数字数字和和下划线下划线组成的字符序列组成的字符序列称为称为-标识符标识符。n用于在程序中给变量、符号常量、数组、函数、用于在程序中给变量、符号常量、数组、函数、数据类型等操作对象数据类型等操

    8、作对象“起名起名”。C语言对标识符的规定 n用户自定义标识符:用户自定义标识符:由由字母字母、数字数字和和下划线下划线构成,但必须以构成,但必须以字母字母或或下划线下划线“_”_”开头开头,不能以数字开头,不能以数字开头不能含有除字母、数字和下划线不能含有除字母、数字和下划线“_”_”外的其他外的其他字符如:字符如:!、&、*等。等。标识符中大小写字母含义不同标识符中大小写字母含义不同 如:如:abcabc和和AbcAbc为不同的标识符为不同的标识符n关键字关键字:必须用小写字母。不允许使用关键必须用小写字母。不允许使用关键字为变量、数组、函数等操作对象命名。字为变量、数组、函数等操作对象命名

    9、。n预定义标识符预定义标识符:允许用户对它们重新定义,允许用户对它们重新定义,当重新定义后将改变它们原来的含义。当重新定义后将改变它们原来的含义。正确区分标识符n正确区分哪些是正确区分哪些是合法标识符合法标识符,哪些是,哪些是不合不合法标识符法标识符。n合法标识符中哪些是合法标识符中哪些是关键字关键字,哪些是,哪些是预定预定义标识符义标识符,哪些是,哪些是用户自定义标识符用户自定义标识符。Abc P1_0 2x P1.0 studentm+y a#b-4 _1 Whileint let x%y LED do w tm Ctrl switch include C51-2 数据类型数据类型1.关键

    10、字关键字 是是C51语言规定的一批标识符,在语言规定的一批标识符,在源程序中代表固定的含义,不能另作它用。源程序中代表固定的含义,不能另作它用。C51语言除了支持语言除了支持ANSI标准标准C语言中的语言中的关键字关键字(见见)外,还根据外,还根据51系列单片机的系列单片机的结构特点扩展部分关键字,见结构特点扩展部分关键字,见。2.预定义标识符预定义标识符 是指是指C51语言提供的系统语言提供的系统函数的名字函数的名字(如如printf、scanf)和预编译处理和预编译处理命令命令(如如define、include)等。等。C51语言语法允许用户把这类标识符另语言语法允许用户把这类标识符另作它

    11、用,但将使这些标识符失去系统规定的作它用,但将使这些标识符失去系统规定的原意。因此,为了避免误解,建议用户不要原意。因此,为了避免误解,建议用户不要把预定义标识符另作它用。把预定义标识符另作它用。数据类型数据类型长度长度值域值域 bit1 bit0,1 unsigned char8 bit0 255 (signed)char8 bit-128 127 unsigned int16 bit0 65535 (signed)int16 bit-32768 32767 unsigned long32 bit0 4294967295 (signed)long32 bit-2147483648214748

    12、3647 float32 bit1.7e-38 3.40e+38 (6位)double64 bit1.7e-38 3.40e+38 (10位)*(一般指针)13字节存储空间地址C51语言的数据类型 C51数据类型数组类型数组类型结构体类型结构体类型(struct)共用体类型共用体类型(union)枚举类型枚举类型(enum)指针类型指针类型(*)构造类型构造类型n1char 字符类型字符类型char类型的长度是一个字节,通类型的长度是一个字节,通常用于定义处理字符数据的变量或常用于定义处理字符数据的变量或常量。常量。分无符号字符类型分无符号字符类型unsigned char和有符号字符类型和有

    13、符号字符类型signed char,默认值为默认值为signed char类型。类型。n字符型变量分为:字符型变量分为:signed char和和 unsigned charn编译系统为其分配编译系统为其分配 1 Byte 1 Byte(字节)的存储空间(字节)的存储空间(Turbo CTurbo C、VC+6.0VC+6.0和和KeilKeil中均分配中均分配1B1B的存储空间)的存储空间)n表示的数值范围:表示的数值范围:signed char:-128127 unsigned char:0255n字符型变量字符型变量定义形式:定义形式:char 字符变量名字符变量名=初值初值;例如:例如

    14、:char ch1,c1;unsigned char c2=a,c3=A,c4=307;例如例如:int a,b;(指定变量、为(指定变量、为整型整型)char x,y;(指定变量指定变量x x、y y为为字符型字符型)unsigned w,u;(指定变量指定变量w w、u u为为无符号整型无符号整型)unsigned char c,d;(指定变量、为(指定变量、为无符号无符号字符型字符型)n2int 整型整型int整型长度为两个字节,用于存放一个双整型长度为两个字节,用于存放一个双字节数据。字节数据。分有符号分有符号int整型数整型数signed int和无符号整和无符号整型数型数unsig

    15、ned int,默认值为,默认值为signed int类类型型n 根据值大小默认类型。根据值大小默认类型。n 整型常量后面加整型常量后面加l或或L,则认为是,则认为是 long int型型 如:如:123L、0L、432l、0 x100ln 整型常量后面加整型常量后面加u或或U,则认为是,则认为是 unsigned int型型如:如:0 xF8A5U、0745u、-244u、-98U等等n3long 长整型长整型long长整型长度为四个字节,用于存放一个四字节长整型长度为四个字节,用于存放一个四字节数据。分有符号数据。分有符号long长整型长整型signed long和无符号和无符号长整型长整

    16、型unsigned long,默认值为,默认值为signed long类型。类型。n 4float 浮点型浮点型float浮点型在十进制中具有浮点型在十进制中具有7位有效数字,是符合位有效数字,是符合IEEE754标准的单精度浮点型数据,占用四个字标准的单精度浮点型数据,占用四个字节节。n5指针型指针型指针型本身就是一个变量,在这个变量中存放的是指针型本身就是一个变量,在这个变量中存放的是另一个数据的地址。这个指针变量要占据一定的内另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同。存单元,对不同的处理器长度也不尽相同。n6bit 位变量位变量 bit类型-定义1

    17、个位变量,值为0或1.其存储器类型只能是bdata、data、idata,严格讲只能是:bdata 所有的所有的bit变量都放在变量都放在80C51内部存储内部存储区的可位寻址区,而该区域只有区的可位寻址区,而该区域只有16字节长,字节长,所以在某个范围内只能声明最多所以在某个范围内只能声明最多128个位变个位变量。量。nbit flag;/定义一个位变量定义一个位变量flagnbit flag=1;/定义一个位变量定义一个位变量flag并赋初值并赋初值17 sfr类型类型-用于定义用于定义1个个8位的特殊功能寄位的特殊功能寄存器存器定义形式:定义形式:sfr 标识符标识符=8位特殊功能寄存器

    18、在内部位特殊功能寄存器在内部RAM中的中的实际实际地址;地址;标识符可为汇编语言中的特殊功能寄存器标识符可为汇编语言中的特殊功能寄存器名或自己任意命名名或自己任意命名 如:如:sfr P0=0 x80;sfr PSW=0 xd0;sfr TMOD=0X89;8 sfr16类型类型-用于定义用于定义1个个16位的特殊功能寄存器位的特殊功能寄存器定义形式:定义形式:sfr16 标识符标识符=16位特殊功能寄存器的位特殊功能寄存器的低字节地址低字节地址;51子系列中只有子系列中只有DPTR为为16位的特殊功能寄存器:位的特殊功能寄存器:由由DPH和和DPL组成,其地址分别为组成,其地址分别为0 x8

    19、2和和0 x83,地地址连续址连续。sfr16 DPTR=0 x82;/*地址为低字节单元的地址地址为低字节单元的地址*/52子系列中子系列中T2可定义如下:可定义如下:sfr16 T2=0 xCC;T0和和T1不能用不能用sfr16进行定义:进行定义:sfr16 T0=0 x8A;/*错误,错误,TL0和和TH0地址不连续地址不连续*/sfr16 T1=0 x8B;/*错误,错误,TL1和和TH1地址不连续地址不连续*/n9sbit 可寻址位可寻址位 sbit是是C51中的一种扩充数据类型,利用它可中的一种扩充数据类型,利用它可以访问芯片内部的以访问芯片内部的RAM中的可寻址位或特殊功能寄中

    20、的可寻址位或特殊功能寄存器中的可寻址位。存器中的可寻址位。sbit类型类型-定义定义bdata区或可位寻址特殊功能寄存器(字节地区或可位寻址特殊功能寄存器(字节地址的末位为址的末位为0或或8)中的位,值也为)中的位,值也为0或或1.如:如:sfr P1=0 x90;sbit P1_0=P10;或或sbit P1_0=0 x900;或或sbit P1_0=0 x90;sbit EA=0 xAF;sbit IT0=0 x88;sbit P=0 xD0;注:安装注:安装Keil软件后,在文件夹软件后,在文件夹“C:keilc51inc”中有一些头中有一些头文件包含了有关特殊功能寄存器和相应位的定义。

    21、文件包含了有关特殊功能寄存器和相应位的定义。reg51.h头文件内容:/*BYTE Register */sfr P0 =0 x80;sfr P1 =0 x90;sfr P2 =0 xA0;sfr P3 =0 xB0;sfr PSW =0 xD0;sfr ACC =0 xE0;sfr B =0 xF0;sfr SP =0 x81;sfr DPL =0 x82;sfr DPH =0 x83;sfr PCON=0 x87;sfr TCON=0 x88;sfr TMOD=0 x89;sfr TL0 =0 x8A;sfr TL1 =0 x8B;sfr TH0 =0 x8C;sfr TH1 =0 x8D

    22、;Reg51.h头文件内容(续)/*IP */sbit PS =0 xBC;sbit PT1 =0 xBB;sbit PX1 =0 xBA;sbit PT0 =0 xB9;sbit PX0 =0 xB8;/*P3 */sbit RD =0 xB7;sbit WR =0 xB6;sbit T1 =0 xB5;sbit T0 =0 xB4;sbit INT1=0 xB3;sbit INT0=0 xB2;sbit TXD =0 xB1;sbit RXD =0 xB0;总结:总结:n在编程时,如果只强调程序的运算速度而在编程时,如果只强调程序的运算速度而又不进行负数运算,最好采用无符号格式。又不进行负

    23、数运算,最好采用无符号格式。n无论何时,应尽可能地使用无论何时,应尽可能地使用unsgned char、Bit类型,它们能被类型,它们能被8051直接接受。直接接受。C51-3 常量和变量常量和变量符号常量用大写,变量用小写符号常量用大写,变量用小写n1 1、常量、常量 又称为标量,常量的值在程序又称为标量,常量的值在程序执行过程中不能改变,一般用一个标识符执行过程中不能改变,一般用一个标识符号代表一个常量,称为符号常量。号代表一个常量,称为符号常量。符号常量符号常量的作用域:的作用域:定义这个符定义这个符号常量的整号常量的整个个C C文件文件 (1)整型常量又称为整数(可直接使用不用整型常量

    24、又称为整数(可直接使用不用定义)。定义)。在在C51语言中,整数可以用十进制、八进制语言中,整数可以用十进制、八进制和十六进制形式来表示。但和十六进制形式来表示。但C51中数据的输出形中数据的输出形式只有十进制和十六进制两种。式只有十进制和十六进制两种。(2)在在C51语言中,还可以用一个语言中,还可以用一个“特别指特别指定定”的标识符来代替一个常量,称为符号常量。的标识符来代替一个常量,称为符号常量。必须必须define先定义再使用先定义再使用例:例:#define PI 3.14159 /定义符号常量定义符号常量PI=3.14159 使用符号常量的好处:使用符号常量的好处:n含义清楚、含义

    25、清楚、顾名知意顾名知意。n程序中需要改变常量的值时能做到程序中需要改变常量的值时能做到“一改全改一改全改”。n2 2、变量、变量有关概念有关概念n在程序运行过程中,其值可以改变的量,称在程序运行过程中,其值可以改变的量,称为为变量变量,变量名变量名用标识符表示。用标识符表示。n变量一般有变量一般有变量名变量名和和变量值变量值组成。组成。变量名为变量名为RAM单元地址号,变量值为该单元中存放单元地址号,变量值为该单元中存放的内容。的内容。nC规定程序中用到的变量必须规定程序中用到的变量必须“先定义后使先定义后使用用”n系统为变量在系统为变量在内存内存(内部(内部RAM和外部和外部RAM)中分配中

    26、分配存储单元存储单元,存储变量的,存储变量的值值。n编写程序时可以通过编写程序时可以通过变量名变量名来存、取变量值。来存、取变量值。例如:例如:unsigned int xdata i,j;unsigned char data ch1,ch2=A;存储器类型存储器类型-指明变量所在存储器的区域情况指明变量所在存储器的区域情况C51根据单片机存储器的结构特点分为以下六种存储类型:根据单片机存储器的结构特点分为以下六种存储类型:1、data-变量定义在片内变量定义在片内RAM可可直接寻址直接寻址的低的低128B空间中。空间中。如:如:unsigned char data ch5;2、idata-变

    27、量定义在片内变量定义在片内RAM可可间接寻址间接寻址的的256B空间中。空间中。如:如:int idata x=10;3、bdata-变量定义在片内变量定义在片内RAM可可位寻址位寻址的的16B空间中(地空间中(地址范围:址范围:0 x20-0 x2F)。如:如:int bdata flag;sbit flag0=flag0;4、xdata-变量定义在片外变量定义在片外RAM64KB空间中。空间中。如:如:float xdata f100;5、pdata-变量定义在片外变量定义在片外RAM低低256B空间中。空间中。如:如:float pdata y;6、code-变量定义在程序存储器变量定义

    28、在程序存储器64KB的空间中。的空间中。如:如:#define uchar unsigned char uchar code display=0 x7F,0 xBF,0 xDF,0 xFE,0 xF7;例例-各种存储类型演示各种存储类型演示#include#define uchar unsigned char#define uint unsigned intvoid main()uchar code a=0 xfd;/*在在程序存储器程序存储器定义变量定义变量a*/uchar data b=0 x78;/*在在内部内部RAM低低128B中定义变量中定义变量b*/uchar idata c=0

    29、xE9;/*在在内部内部RAM256B中定义变量中定义变量c*/uchar bdata d=0 x56;/*在在内部内部RAM20h2fh空间定义变量空间定义变量d*/uint xdata e=0 xFE98;/*在在外部外部RAM空间定义变量空间定义变量e*/uint pdata f=0 xE2;/*在在外部外部RAM低低256B空间定义变量空间定义变量f*/for(;);变量的默认存储类型变量的默认存储类型如果变量定义时没有明确指明其存储类型(如果变量定义时没有明确指明其存储类型(data、idata、bdata、xdata、pdata、code),则编译器编,则编译器编译时根据工程项目的

    30、存储模式自动选择存储类型。译时根据工程项目的存储模式自动选择存储类型。三种存储模式:三种存储模式:1、small-小存储模式:变量默认分配在小存储模式:变量默认分配在data区。区。2、compact-紧凑存储模式:变量默认分配在紧凑存储模式:变量默认分配在 pdata区。区。3、large-大存储模式:变量默认分配在大存储模式:变量默认分配在xdata区。区。如:如:unsigned int i,j=1000;unsigned char ch1,ch2=A;存储模式举例:存储模式举例:#pragma smallchar k1;/*k1存储类型为存储类型为data*/int xdata m1;

    31、/*m1存储类型为存储类型为xdata*/#pragma compactchar k2;/*k2存储类型为存储类型为pdata*/int xdata m2;/*m2存储类型为存储类型为xdata*/int func1(int x1,int y1)large return(x1+y1);/*x1、y1存储类型为存储类型为xdata*/int func2(int x2,int y2)return(x2-y2);/*x2、y2存储类型为存储类型为data*/变量的初始化 变量的初始化指在声明变量的同时对变量赋初值变量的初始化指在声明变量的同时对变量赋初值。例如:例如:int a=5,b=10+2;d

    32、ouble x=23.568,y;char ch1=a,ch2=66,ch3=142;表示声明变量并对变量存储单元赋值。表示声明变量并对变量存储单元赋值。第一条语句相当于:第一条语句相当于:int a,b;a=5;b=12;错误的初始化:错误的初始化:int a=3+b,b=5;改为:改为:int b=5,a=3+b;float m=n=23.16;改为:改为:float m=23.16,n=23.16;C51 运算符运算符1 C语言运算符和表达式简介语言运算符和表达式简介算术运算符和算术表达式算术运算符和算术表达式赋值运算符赋值运算符和赋值表达式和赋值表达式逗号运算符和逗号表达式逗号运算符和

    33、逗号表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式位运算符和位运算表达式位运算符和位运算表达式条件运算符和条件表达式条件运算符和条件表达式关系运算符和关系表达式关系运算符和关系表达式其他运算符及其运算其他运算符及其运算(指针、下标等)指针、下标等)2 2 运算符的有关概念运算符的有关概念n作用:作用:对运算对象完成规定的操作运算对运算对象完成规定的操作运算n类型:类型:按运算对象分:按运算对象分:n单目:单目:只有一个操作对象,如只有一个操作对象,如:自增运算符(自增运算符(+)n双目:双目:有两个操作对象,如:有两个操作对象,如:乘(乘(*),除(),除(/)n三目:三目:有三个操作对象

    34、有三个操作对象 只有一个:只有一个:条件运算符(?:)条件运算符(?:)按功能分:按功能分:n算术、赋值、关系、逻辑算术、赋值、关系、逻辑n条件、逗号、位、其他条件、逗号、位、其他3 运算符的优先级和结合性n优先级优先级指各种运算符号的运算优先顺序指各种运算符号的运算优先顺序例如:例如:算术运算中先算术运算中先 */后后 +-+-a-ba-b*c+dc+d4 4 各种运算符的表示各种运算符的表示+-*/%+-+-=+=-=*=/=%=&=|=!=&|!&|?:,&sizeof (数据类型标识符)类型类型种类种类算术运算符算术运算符赋值运算符赋值运算符关系运算符关系运算符逻辑运算符逻辑运算符位运

    35、算符位运算符条件运算符条件运算符逗号运算符逗号运算符其他运算符其他运算符5 表达式的有关概念n什么是表达式什么是表达式由由运算符运算符将运算对象连接成的式子,它描述了将运算对象连接成的式子,它描述了一个具体的求值运算过程。一个具体的求值运算过程。n计算表达式的值计算表达式的值按照运算符的运算规则求值按照运算符的运算规则求值求值时注意求值时注意运算符的优先级和结合性运算符的优先级和结合性例如:n表达式:150+b*2-12.456 b=(+a)-2a/=a*=(a=2)f=abc-a|+b&c+max=ab?a:b a=3,a+=3,a*a 1/(float)a+6 6 6 算术运算符和算术表达

    36、式算术运算符和算术表达式n算术运算符的优先级算术运算符的优先级()例 5/2 =2 -5/2.0=-2.5例 5%2 =1 -5%2 =-1 1%10 =1 5%1 =0 5.5%2 ()7 7 自增、自减运算符自增、自减运算符n自增自增(+)、自减、自减(-)都是都是单目单目运算符运算符n有前缀和后缀有前缀和后缀两种形式两种形式 前缀形式前缀形式:先自增先自增(自减自减)再引用;再引用;后缀形式后缀形式:先引用再自增先引用再自增(自减自减);n功能:功能:前缀形式前缀形式 +a a 等价于等价于 a=a+1a=a+1 -a a 等价于等价于 a=a a=a 1 1 后缀形式后缀形式 a+a+

    37、等价于等价于 a=a+1a=a+1 a a-等价于等价于 a=a 1a=a 1例如:例如:当当 a5 时时 +a 表达式的值为表达式的值为 6,且且 a6 a+表达式的值为表达式的值为5,且且 a6 b=+a 等价于等价于 a=a+1;b=a 表达式的值为表达式的值为6,且,且 a=6,b=6 b=a+等价于等价于 b=a;a=a+1 表达式的值为表达式的值为5,且,且 a=6,b=5 说明:n+和和-的运算对象只能是变量的运算对象只能是变量,不能是常量不能是常量或表达式。或表达式。例如:例如:5+、(a+2)+不合法。不合法。n右结合性右结合性,结合方向为从右到左。,结合方向为从右到左。例如

    38、:例如:a+等价于等价于-(a+)而不等价而不等价(-a)+n如果有多个运算符连续出现时,如果有多个运算符连续出现时,C编译系统尽可编译系统尽可能多的从左到右将多个字符组合成一个运算符能多的从左到右将多个字符组合成一个运算符例如:例如:i+j 等价于等价于 (i+)+j -i+-j 等价于等价于-(i+)+(-j)8 关系运算符、逻辑运算符及其表达关系运算符、逻辑运算符及其表达式式 无论是关系运算还是逻辑运算,无论是关系运算还是逻辑运算,其结其结果都会得到一个逻辑值果都会得到一个逻辑值。逻辑值只有两。逻辑值只有两个,在很多高级语言中都用个,在很多高级语言中都用“真真”和和“假假”来表示。来表示

    39、。由于没有专门的由于没有专门的“逻辑值逻辑值”,C51语言语言规定:当关系成立或逻辑运算结果为非零值规定:当关系成立或逻辑运算结果为非零值(整数或负数整数或负数)时为时为“真真”,用,用“1”表示;否表示;否则为则为“假假”,用,用“0”表示。表示。n关系运算符关系运算符种类种类:=!=结合方向:自左向右结合方向:自左向右优先级别:优先级别:=!=优先级6(高)优先级7(低)例例 ca+b /c(a+b)ca+b /c(a+b)ab!=c /(ab)!=c ab!=c /(ab)!=c a=bc /a=(bc)a=bc /a=(bc /a=(bc)a=bc /a=(bc)关系表达式的值:是逻辑

    40、值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f;ab (ab)=c b+cb f=abc/表达式值1/表达式值1/表达式值0/d=1/f=0(1)关系运算符与关系表达式关系运算符与关系表达式(左结合左结合)例 若a=0;b=0.5;x=0.3;则 a=x278在C中是允许的,值为0例 int i=1,j=7,a;a=i+(j%4!=0);则a=2例 a0 结果为 A100 结果为10关系运算注意(1)例 注意区分“=”与“=”int a=0,b=1;if(a=b)printf(“a equal to b”);else printf(“a not equal to b”

    41、);例 应避免对实数作相等或不等的判断如 1.0/3.0*3.0=1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)1e-60关系运算注意(2)ab!a!ba&ba|b真假真假假假真真n逻辑运算符逻辑运算符种类:种类:!&|逻辑运算真值表逻辑运算真值表C语言中,运算量:0表示“假”,非0表示“真”,运算结果:0表示“假”,1表示“真”,真假假假假假真真假假真真真假真真(2)逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式!(2)&(11)|(12)高低例 a=x&xb&xy a=b|x=y !a|abl优先级:l结合方向:!:从右向左&:从左向右|:从左向右/(a=x)&(xb)&

    42、(xy)/(a=b)|(x=y)/(!a)|(ab)逻辑运算符和表达式(2)注意:数学中常用的逻辑关系注意:数学中常用的逻辑关系xay,C51语言的正确写法语言的正确写法为为(x=a)&(a=y)或或 x=a&a3&2|83)&2|(8(4-(!0)值为1逻辑运算符和表达式(3)短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符 例 a&b&c /只在a为真时,才判别b的值;只在a、b都为真时,才判别 c的值例 a|b|c /只在a为假时,才判别b的值;只在a、b都为假时,才判别 c的值例 a=1;b=2;c=3;d=4

    43、;m=1;n=1;(m=ab)&(n=cd)/结果m=0,n=19 9 赋值运算符和赋值表达式赋值运算符和赋值表达式n一般的赋值运算符一般的赋值运算符(右结合)右结合)=n复合复合赋值运算符赋值运算符(右结合)右结合)由一个二元运算符和赋值运算符共同构成由一个二元运算符和赋值运算符共同构成 C C语言共有十种语言共有十种复合复合赋值运算符:赋值运算符:+=-=*=/=%=&=|=n赋值表达式:赋值表达式:由由赋值运算符将变量和一个表达式连接起来赋值运算符将变量和一个表达式连接起来的式子。的式子。n功能:功能:将将表达式的值表达式的值存入存入变量变量对应的内存单元中对应的内存单元中n表达式的值:

    44、表达式的值:为为赋值运算符赋值运算符左边变量的值左边变量的值m=12b=(+a)-2 m%=3+n 等价于等价于 m=m%(3+n)说明:n赋值号左边必须是变量,右边可以是赋值号左边必须是变量,右边可以是C语言任意合语言任意合法的表达式法的表达式例如:例如:n=t+2s 合法合法 相当于:相当于:n=(t+2)10 等价于:等价于:a=(b=(b*c)10)n赋值号与数学中的等号含义不同赋值号与数学中的等号含义不同例如:例如:数学中数学中 a=b 等价于等价于 b=a C语言中语言中 a=b 不等价于不等价于 b=a10 位运算符和位运算&|低于单目、算术运算符,低于单目、算术运算符,高于其他

    45、运算符高于其他运算符低于单目、算术和关系运低于单目、算术和关系运算符,高于其他运算符算符,高于其他运算符位运算符的运算规则 n假设ai和bi均是一个二进制位(bit)运算对象逻辑运算结果aibiai&biai|biai biai000001010111100110111100已知已知x为:为:00010011,y为:为:11110111。求。求x、x&y、x|y、xy的结果。的结果。例:例:(1)x是将是将x中原为中原为1的位变成的位变成0,原为,原为0的位变成的位变成1。因。因此,此,x为:为:11101100。(2)x&y、x|y、xy的结果为:的结果为:00010011&:1111011

    46、10001001100010011|:111101111111011100010011 :1111011111100100程序如下:#include#include void main()int a=10,b=010;SCON=0 x50;TMOD|=0X20;PCON|=0X80;TH1=TL1=0XFD;TI=1;TR1=1;printf(%d%dn,a&b,a|b);printf(%d%dn,ab,a);while(1);输出结果:输出结果:位逻辑运算符位逻辑运算符&、|、的两个运算对象的的两个运算对象的位置是可交换的,但逻辑运算符位置是可交换的,但逻辑运算符&、|的两个的两个运算对象的

    47、位置不可交换,它们严格从左到右运算对象的位置不可交换,它们严格从左到右运算。运算。位逻辑运算符与逻辑运算符的区别位逻辑运算符与逻辑运算符的区别.位逻辑运算符是对二进制位的,逻辑运算位逻辑运算符是对二进制位的,逻辑运算符是对整个表达式的符是对整个表达式的。位逻辑运算符要计算表达式的具体数值,位逻辑运算符要计算表达式的具体数值,逻辑运算符只判别表达式的真逻辑运算符只判别表达式的真(成立成立)与假与假(不成不成立立)。移位运算n例如:ab-1 等价于 (a+8)(b-1)#include void main()int a=10,b=2;printf(%d%dn,);输出结果:输出结果:11 11 逗

    48、号运算符和逗号表达式逗号运算符和逗号表达式n逗号表达式的一般形式逗号表达式的一般形式 表达式表达式1,表达式,表达式2,表达式,表达式nn 逗号表达式的值逗号表达式的值从左向右,依次对表达式求值,最后得到从左向右,依次对表达式求值,最后得到表达式表达式n 的的值就是值就是逗号表达式的值逗号表达式的值 a=5,a+,a*3 t=1,t+5,t+x=(a=3*5,a*4)表达式语句表达式语句而在而在MCS51 单片机的单片机的C 语言中则是加入分号语言中则是加入分号“;”构成表达式语句。构成表达式语句。举例如下:举例如下:b=b*10;Count+;X=A;Y=B;Page=(a+b)/a-1;在

    49、在C 语言中有一个特殊的表达式语句,称为空语语言中有一个特殊的表达式语句,称为空语句,由一个分号句,由一个分号“;”组成。组成。通常会有以下两种用法:通常会有以下两种用法:While或或for 构成的循构成的循环语句后面加一个分号,形成一个不执行其它操作环语句后面加一个分号,形成一个不执行其它操作的空循环体。的空循环体。如如 for(a=0;a50000;a+);小结小结 本课主要内容是:本课主要内容是:C C的算术、的算术、运算符,各种运算符的运算优先运算符,各种运算符的运算优先级级,以及不同类型数据运算时的以及不同类型数据运算时的类型转换规则,要求能够正确地类型转换规则,要求能够正确地书写书写C C的表达式。的表达式。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第七课-C51语言的结构和特点课件.ppt
    链接地址:https://www.163wenku.com/p-6043448.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库