- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 C51语言
3.4 C51流程控制语句 3、if(条件表达式1)语句1 else if (条件表达式2)语句2 else if (条件表达式3)语句3 … … else if (条件表达式n)语句n else 语句n+1 此种形式的条件语句常用于实现多方向条件分支。 例如: if(a= 1){ c=10;} else if { a= 2){ c=20;} else if { a= 3){ c=30;} else if { a= 4){ c=40;} else { c=0;} 3.4 C51流程控制语句 3.4.2开关语句 开关语句主要用于多分支的场合。一般形式为: switch (表达式) { case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; … … case 常量表达式n:语句n;break; default :语句n+1; } 开关语句执行时,将switch后面表达式的值与case后面各个常量表达式的值逐个进行比较,若匹配则执行相应case后面的语句,然后执行break语句。break语句的功能是中止当前语句的执行,使程序跳出switch语句。若没有匹配的情况,则执行语句n+1。 3.4 C51流程控制语句 while循环语句 一般形式为: while(条件表达式)语句; 若条件表达式的结果为真(非0值),程序就重复执行后面的语句,一直执行到条件表达式的结果变为假(0值)时为止。这种循环结构是先检查条件表达式给出的条件,再根据检查的结果决定是否执行后面的语句。如果条件表达式的结果一开始就为假,则后面的语句一次也不能执行。 3.4 C51流程控制语句 3.4.3 do-while语句 一般形式为: do语句while(条件表达式); 该结构的特点是先执行给定的循环语句,然后再检查条件表达式的结果。当条件表达式的值为真(非0值),则重复执行循环体语句,直到条件表达式的值变为假(0值)时为止。对于此种结构,在任何条件下,循环体语句至少会被执行一次。 3.4 C51流程控制语句 3.4.4 for循环语句 一般形式为: for([初值表达式];[条件表达式];[更新表达式])语句 该语句执行时,先计算初值表达式,作为循环控制变量的初值,再检查条件表达式的结果,当满足条件时就执行循环体语句并计算更新表达式,然后再根据更新表达式的计算结果来判断循环条件是否满足,一直进行到循环条件表达式的结果为假(0值)时退出循环体。 3.4 C51流程控制语句 3.4.5 if语句与goto语句结合 利用if语句与goto语句的结合,可以构成循环结构。可以有两种形式: 1、当型循环 形式为: loop:if(表达式) {语句 goto loop; } 2、直到型循环 形式为: loop:{语句 if(表达式) goto loop; } 3.5 C51的指针类型 在C51中可以定义指针类型的变量。变量的指针就是该变量的地址。为了表示指针变量和它所指向的变量地址间的关系,可以利用运算符:*(取内容)和(取地址)。 一般定义形式为: 变量 = * 指针变量 指针变量 = 目标变量 取内容运算是将指针变量所指向的目标变量的值赋给左侧的变量;取地址运算是将目标变量的地址赋给左侧的变量。 必须注意,指针变量中只能存放指针型数据(即地址),不要将一个非指针型的数据赋给一个指针变量。正确的赋值示例如: char data *p /* 定义指针变量 */ p = 30H /* 为指针变量赋值,30H为片内RAM地址 */ C51编译器支持两种指针类型:一般指针和基于存储器的指针。 3.5 C51的指针类型 3.5.1 一般指针 定义指针变量时,若未指定它所指向的对象的存储器类型时,该指针变量就被认为是一般指针。一般指针占用3个字节:第一个字节存放该指针的存储器类型编码(由编译模式的默认值确定),第二和第三个字节分别存放该指针的高位和低位地址偏移量。编码为: 例如: char *xdata strptr; /* 位于xdata 空间的一般指针 */ int *data number;/* 位于data 空间的一般指针 */ 一般指针所指向对象的存储空间位置在运行期间才能确定,在编译时无法优化存储方式,必须生成一般代码以保证对任意空间的对象进行存取。因此一般指针所产生的代码速度较慢。 第3章 C51语言 第3章 C51语言 本章主要内容: 3.1 C51程序开发概述 3.2 C51的数据类型与定义 3.
文档评论(0)