版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第三章第三章C语言基础以及语言基础以及流水灯的实现流水灯的实现C51数据类型 uC51定义了定义了标准标准C语言语言的所有数据的所有数据类型类型;u同时对标准同时对标准C语言进行语言进行了扩展,更了扩展,更加注意对系加注意对系统资源的合统资源的合理利用,如理利用,如表所示。表所示。 数据类型数据类型长度长度数值范围数值范围unsigned charunsigned char1 1字节字节0 0255255charchar1 1字节字节-128-128+127+127unsigned intunsigned int2 2字节字节0 06553565535intint2 2字节字节-32768-
2、32768+32767+32767unsigned longunsigned long4 4字节字节0 042949672954294967295longlong4 4字节字节-2147483648-2147483648+2147483647+2147483647floatfloat4 4字节字节1.175494E-381.175494E-383.402823E+383.402823E+38* *1 13 3字节字节对象的地址对象的地址bitbit位位0 0或或1 1sfrsfr1 1字节字节0 0255255sfr16sfr162 2字节字节0 06553565535sbitsbit位位0
3、0或或1 1C51基本数据类型 uchar字符类型字符类型u长度是一个字节(长度是一个字节(8位)位) uint整型整型u长度为两个字节(长度为两个字节(16位)位) ulong长整型长整型 u长度为四个字节(长度为四个字节(32位)位) ufloat浮点型浮点型u长度为四个字节(长度为四个字节(32位)位) u* 指针型指针型 u指针型本身就是一个变量,在这个变量中存放的是指指针型本身就是一个变量,在这个变量中存放的是指向另一个数据的地址。向另一个数据的地址。u这个指针变量要占据一定的内存单元,在这个指针变量要占据一定的内存单元,在C51中它的长中它的长度一般为度一般为13个字节。个字节。
4、C语言的变量类型及范围C语言常量与变量 u常量是常量是在程序运行过程中在程序运行过程中不能改变的不能改变的,而,而变量是变量是可以可以在程序运行过程中在程序运行过程中不断变化的不断变化的。u变量的定义可以使用所有变量的定义可以使用所有C51编译器支持的数据编译器支持的数据类型,而常量的数据类型只有整型、浮点型、字类型,而常量的数据类型只有整型、浮点型、字符型、字符串型和位变量。符型、字符串型和位变量。 常量 u常量可用在不必改变值的场合,如固定的数据表,字库等。常量可用在不必改变值的场合,如固定的数据表,字库等。 u常量的定义方式有几种常量的定义方式有几种,下面来加以说明。下面来加以说明。 #
5、difine False 0 x0; /用预定义语句可以定义常量用预定义语句可以定义常量 #difine True 0 x1; /这里定义这里定义False为为0,True为为1 程序中用到程序中用到False和和True,在编译时,在编译时,False替换为替换为0,True替换为替换为1。 unsigned int code a=100; /用用code把把a定义在程序存储器中并赋定义在程序存储器中并赋值值 const unsigned int c=100; /用用const定义定义c为无符号为无符号int常量并赋值常量并赋值 以上两句它们的值都保存在程序存储器中,而程序存储器在运以上两句
6、它们的值都保存在程序存储器中,而程序存储器在运行中是不允许被修改的,所以如果在这两句后面用了类似行中是不允许被修改的,所以如果在这两句后面用了类似a=110,a+这样的赋值语句,编译时将会出错。这样的赋值语句,编译时将会出错。 变量 u变量就是一种在程序执行过程中其值能不断变化变量就是一种在程序执行过程中其值能不断变化的。的。u要在程序中使用变量必须先用标识符作为变量名,要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。统才能为变量分配相应的存储空间。u定义一个变量的格式如下:定义一个
7、变量的格式如下: 存储种类存储种类数据类型数据类型存储器类型存储器类型变量名表变量名表在定义格式中除了在定义格式中除了数据类型数据类型和和变量名表变量名表是必要的,其是必要的,其它都是可选项。它都是可选项。 C51运算符、表达式及其规则1 C51最基本的五种算术运算符+ 加法运算符,或正值符号- 减法运算符,或负值符号* 乘法运算符/ 除法运算符% 模(求余)运算符。算术表达式、优先级与结合性 算术表达式用算术运算符和括号将运算对象连接起来的式子称为表达式。其中的运算对象包括常量、变量、函数、数组和结构等。 优先级指当运算对象两侧的都有运算符时,执行运算的先后次序。按运算符优先级别的高低顺序执
8、行运算。 结合性指当一个运算对象两侧的运算符的优先级别相同时的运算顺序。2. Cx51提供六种关系运算符关系运算符的优先级关系表达式:用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式及字符表达式等)连接起来的式子,称为关系表达式。关系表达式的结果:由于关系运算符总是二目运算符,故它作用在运算对象上产生的结果为一个逻辑值,即真或假。C语言1代表真,以0代表假。关系运算符的优先级低于算术运算符。关系运算符的优先级高于赋值运算符。例: 若 a=4,b=3,c=1,则ab 的值为真,表达式值为1;b+cb= = c的值为真;3. Cx51 逻辑运算符、表达式及优先级Cx51提供3种逻
9、辑运算符:& 逻辑“与” (AND)| 逻辑“或” (OR)! 逻辑“非”(NOT)“&”和“|”是双目运算符,要求有两个运算对象;而“!”是单目运算符,只要求有一个运算对象。 Cx51逻辑运算符与算术运算符、关系运算符和赋值运算符之间优先级的次序。其中“!”(非)运算符优先级最高,算术运算符次之,关系运算符再次之,&和|再次之,最低为赋值运算符。Cx51位操作及其表达式Cx51提供了如下位操作运算符:& 按位与| 按位或 按位异或 按位取反 位右移例 若 a = 54H = 01010100B,b=3BH=00111011B则表达式c = a & b的
10、值为10H,即 位左移和位右移运算符()位左移、位右移运算符“”,用来将一个数的各二进制位的全部左移或右移若干位;移位后,空白位补0,而溢出的位舍弃。例 若 a = EAH = 11101010B,则表达式a = a2,将a值左移两位,其结果为A8H,即自增减运算符、复合运算符及其表达式1. 自增减运算符自增减运算符的作用是使变量自动加1或减1.如+i、-i 在使用i之前,先使i值加(减)1。i +、i - 在使用i之后,再使i值加(减)1。粗略地看,+i和i+的作用都相当于i=i+1,但+i和i+的不同之处在于+i先执行i=i+1,再使用i的值,而i+则是先使用i的值,再执行i=i+1。例1
11、 若i值原来为5,则j = + +i j值为6,i值为6;j = i+ + j值为5,i值为6;1. 复合运算符及其表达式凡是二目运算符,都可以与赋值运算符“=”一起组成复合赋值运算符。Cx51共提供了10种复合赋值运算符,及+=、=、*=、/=,=、&=、=、|=。采用这种复合赋值运算的目的,是为了简化程序,提高C程序编译效率。如:a+=b 相当于a=a+b a%=b 相当于 a=a%ba-=b 相当于a=a-b a=b 相当于 a=ab) max=a; else max=b;多分支if语句u多分支多分支if语句的基本形式为:语句的基本形式为:if(表达式(表达式 1) 语句语句1
12、else if(表达式(表达式 2) 语句语句2 else if(表达式(表达式 3) 语句语句3 else if(表达式(表达式 m) 语句语句melse 语句语句n if语句的嵌套u当当ifif语句中的语句体又包含一个或多个语句中的语句体又包含一个或多个ifif语句,称为语句,称为ifif语句的嵌套。其一般形式如下:语句的嵌套。其一般形式如下:if(if(表达式表达式) ) if( if(表达式表达式1) 1) 语句语句1111 else else 语句语句1212else else if( if(表达式表达式2) 2) 语句语句2121 else else 语句语句2222u应当注意应当
13、注意ifif与与elseelse的配对关系,的配对关系,C C语言规定:语言规定:elseelse总是与它上面的最近的总是与它上面的最近的ifif配对配对 表达式为真,表达式1为假;执行?表达式为真,表达式1为真;执行?表达式为假,表达式2为真;执行?表达式为假,表达式2为假;执行? swich语句 u SwitchSwitch的一般形式如下:的一般形式如下: switchswitch(表达式)(表达式) case case 常量表达式常量表达式1 1:语句:语句1 1 case case 常量表达式常量表达式2 2:语句:语句2 2 case case 常量表达式常量表达式n n:语句:语句
14、n n default default:语句:语句n+1n+1 u当表达式的值与某一个当表达式的值与某一个casecase后面的常量表达式相后面的常量表达式相等时,就执行此等时,就执行此casecase后面的语句;后面的语句;u若所有的若所有的casecase中的常量表达式的值都没有与表达中的常量表达式的值都没有与表达式值匹配的,就执行式值匹配的,就执行defaultdefault后面的语句;后面的语句;u每一个每一个casecase的常量表达式的值必须不相同;的常量表达式的值必须不相同;u各个各个casecase和和defaultdefault的出现次序不影响执行结果。的出现次序不影响执行结
15、果。 swich语句特别说明 u执行完一个执行完一个case后面的语句后,并不会自动跳后面的语句后,并不会自动跳出出switch,转而去执行其后面的语句;,转而去执行其后面的语句; u通常在每一段通常在每一段case的结束加入的结束加入“break;”语句,语句,使程序退出使程序退出switch结构,即终止结构,即终止switch语句的语句的执行。执行。u如:如:switch (x) case 1: y=1; case 2: y=2; case 3: y=0; 假如假如x的值是的值是1,y=? 循环结构控制语句u在一个实用的程序中,循环结构是必不可少的。在一个实用的程序中,循环结构是必不可少的
16、。 循环循环是反复执行某一部分程序行的操作。通过下面是反复执行某一部分程序行的操作。通过下面C语言程语言程序,来看如何利用这些循环语句编写循环程序。序,来看如何利用这些循环语句编写循环程序。void Delay() void main() unsigned char i, j; while(1) for (i=0;i255;i+) ; u这段程序中有两处用到了循环语句,首先是主程序使用了这段程序中有两处用到了循环语句,首先是主程序使用了: while(1)u这样的循环语句写法,在这样的循环语句写法,在中的所有程序将会不断地循环执中的所有程序将会不断地循环执行,直到断电为止;其次是延时程序,使用
17、了行,直到断电为止;其次是延时程序,使用了for循环语句循环语句的形式。的形式。 while语句u当型循环,即当给定的条件成立当型循环,即当给定的条件成立时,执行循环体部分,执行完毕时,执行循环体部分,执行完毕回来再次判断条件,如果条件成回来再次判断条件,如果条件成立继续循环,否则退出循环。其立继续循环,否则退出循环。其一般形式如下:一般形式如下:while(表达式表达式) 循环体语句循环体语句u当表达式为非当表达式为非0值(真)时,执行值(真)时,执行while语句中的内嵌语句。语句中的内嵌语句。u其特点是:先判断表达式,后执其特点是:先判断表达式,后执行语句。行语句。 例:累加运算,求su
18、m=1+2+3+4+5+99main( ) int sum=0,i=1; while(i100) sum=sum+i; i+; i100 sum=sum+ii+ 初始化Y 结束Ndo-while语句u直到型循环,即先执行循环体,直到型循环,即先执行循环体,然后判断给定的条件,只要条件然后判断给定的条件,只要条件成立就继续循环,直到判断出给成立就继续循环,直到判断出给定的条件不成立时退出循环。其定的条件不成立时退出循环。其一般形式如下:一般形式如下:do 循环体语句循环体语句while(表达式表达式)udo-while语句特点是先执行循环语句特点是先执行循环体,然后判断循环条件是否成立。体,然后
19、判断循环条件是否成立。u对同一个问题,既可以用对同一个问题,既可以用while语语句处理,也可以用句处理,也可以用do-while语句语句处理,但是这两个语句是有区别处理,但是这两个语句是有区别的。的。 for语句uC语言中的语言中的for语句使用最为灵活,不仅语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循且可以用于循环次数不确定而只给出循环结束条件的情况。环结束条件的情况。for语句的一般形语句的一般形式为:式为:for(表达式(表达式1;表达式;表达式2;表达式;表达式3) 循环体语句循环体语句u执行步骤如下:执
20、行步骤如下:(1)先求解表达式)先求解表达式1;(2)求解表达式)求解表达式2,其值为真,则执行,其值为真,则执行for语句中指定的内嵌语句(循环体),然语句中指定的内嵌语句(循环体),然后执行第(后执行第(3)步,如果为假,则结束循)步,如果为假,则结束循环;环;(3)求解表达式)求解表达式3;(4)转回第)转回第2步继续执行。步继续执行。 表达式1:给循环控制变量赋初值。表达式2:循环条件,是一个逻辑表达式,它决定什么时候退出循环;表达式3:循环变量增值,规定循环控制变量每循环一次后按什么方式变化。这三部分之间用“;”分开。例:累加运算,求sum=1+3+5+7+9+99main( ) i
21、nt sum=0,i; for(i=1;i100; i=i+2) sum=sum+i;break语句 ubreak语句强行结束循环,转向执行循环语句的下语句强行结束循环,转向执行循环语句的下一条语句。一条语句。u在一个循环程序中,在一个循环程序中, 可以通过循环语句中的表达式可以通过循环语句中的表达式来控制循环程序是否结束。除此之外,还可以通过来控制循环程序是否结束。除此之外,还可以通过break语句从循环体内跳出循环体,即提前结束循语句从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。环,接着执行循环下面的语句。u一般形式:一般形式: break;u注意:注意:break语句语句
22、不能用于循环语句和不能用于循环语句和switch语句之语句之外外的任何其他语句中;的任何其他语句中;break语句是结束整个循环语句是结束整个循环过程过程,不再判断执行循环的条件是否成立。,不再判断执行循环的条件是否成立。 continue语句ucontinue语句作用为结束本次循环,即跳过循环体语句作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行中下面尚未执行的语句,接着进行下一次是否执行循环的判定。循环的判定。u对于对于for循环,跳过循环体其余语句,转向循环变量循环,跳过循环体其余语句,转向循环变量增值表达式的计算;对于增值表达式的计算;对于while和和do
23、-while循环,跳循环,跳过循环体其余语句,但转向循环继续条件的判定。过循环体其余语句,但转向循环继续条件的判定。u一般形式:一般形式: continue;u注意:注意:continue只能用于循环语句中;只能用于循环语句中;continue语句语句只结束本次循环,而不是终止整个循环的执行。只结束本次循环,而不是终止整个循环的执行。for语句的用法 for语句的一般形式语句的一般形式(用法用法1) for(表达式表达式1;表达式表达式2;表达式表达式3) (需要执行的语句需要执行的语句); 用法用法2: for(i=0;i30000;i+); 用法用法3: for(;)while语句的用法 while语句的一般形式语句的一般形式 while(表达式表达式) 循环语句;循环语句; 函数的简单介绍 函数定义的一般形式:函数定义的一般形式: 函数值类型函数值类型 函数名函数名(形式参数列表形式参数列表) 函数体函数体 1、函数值类型、函数值类型2、函数名、函数名3、形式参数列表、形式参数列表4、函数体、函数体5、main函数函数(必须有且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理组织文化与变革
- 护理工作中的压力管理
- 抢救药品与器械的应急调配
- 铸管精整操作工岗后测试考核试卷含答案
- 煤层气发电运行值班员安全综合竞赛考核试卷含答案
- 松香改性反应工岗前环保竞赛考核试卷含答案
- 动车组维修师岗前理论综合技能考核试卷含答案
- 染料合成工创新方法模拟考核试卷含答案
- 煤气净化回收工操作评估考核试卷含答案
- 美发师岗前基础管理考核试卷含答案
- 摩根士丹利 -半导体:中国AI加速器-谁有望胜出 China's AI Accelerators – Who's Poised to Win
- 江苏省水利工程单元工程施工质量验收常用标准(2025.6.20)
- 当代知名作家余华介绍动态
- UNIT9LEARNINGWRITINGWORKSHOP课件高一英语北师大版必修3
- CBT3790-97船舶管子加工技术条件
- 《兽医临床诊疗》课件-皮肤检查
- JB-T 14314-2022 活塞式调流阀
- 普通话词语表
- SJ-T 11798-2022 锂离子电池和电池组生产安全要求
- 《明朝那些事儿》读书分享PPT
- 皖2015s209 混凝土砌块式排水检查井
评论
0/150
提交评论