从单片机基础到程序框架(全集 2019pdf版).pdf - 第224页

十六进制:3 二进制:11 分析: 变量 a 为 3。 单片 机从 case 2 入 口进 来, 因为 ca se 2 和 case 3 都 没有 break 语 句, 直到 遇到 ca se 4 的 break 语句才结束 s witch 程序体 , 因此整个 过程遇到 了 3 次 “a ++”语句, 因此变量 a 的“自加一” 执行 了 3 次后从 0 变成 了 3 。 【52.8 如何在单片机上练习本章节 C 语言程序?】 直接复…

100%1 / 836
/*---C 语言学习区域的开始。-----------------------------------------------*/
unsigned char k; //switch 的入口变量
unsigned char a; //观察此变量的变化来理解 switch 的执行顺序
void main() //主函数
{
a=0;
k=2; //入口变量等 2
switch(k)
{
case 0: //入口 0
a++;
break; //跳出 switch
case 1: //入口 1
a++;
case 2: //入口 2,上述 k 等于 2 所以从这里进来
a++;
case 3: //入口 3
a++;
case 4: //入口 4
a++;
break; //跳出 switch
case 5: //入口 5
a++;
break; //跳出 switch
default: //当前面没有遇到匹配的 case 入口时,就从 default 入口进来
a++;
break; //跳出 switch
} //最后一个 switch 的花括号也是跳出 switch
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:3
十六进制:3
二进制:11
分析:
变量 a 3。单片机从 case 2 口进来,因为 case 2 case 3 没有 break 句,直到遇到 case 4
break 语句才结束 switch 程序体因此整个过程遇到 3 “a++”语句,因此变量 a 的“自加一”执行
3 次后从 0 变成 3
【52.8 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口 51 习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。
第五十三节: 使用函数的三要素和执行顺序。
【53.1 函数的十大关联部件。
函数是什么?我很难用一句话给它下定义,哪怕我真能用一句话定义了,初学者也很难从一句话的定义
“格”出函数之理。之所以函数有如此玄机,确实因为它包罗万象,涉及的内容非常多,就像要我去定义
什么是中国,我也没法用一句话去定义,只有长大了慢慢了解它的地理文化历史,你才会对咱中国有深刻的
认识。函数也是如此,虽然我不能用一句话定义函数,但是函数跟十大部件有关,只要今后不断学习和运用,
对十大部件各个击破直到全部“通关”总有一天你会感悟到函数的精髓。现在先把十大部件列出来,让
家有一个感性的认识,它们是:函数体,函数接口,return 语句,栈,全局变量,普通局部变量,静态局部
变量,单个变量的指针数组的指针,结构体的指针。本节讲的“使用函数的三要素和执行顺序”就是属于
“函数体”这个部件的内容。
【53.2 使用函数的三要素。
有的人习惯把函数称为程序,比如主程序,子程序,这时的主程序对应主函数,子程序对应子函数,
一回事,只是每个人的表达习惯不一样而已。使用函数的三要素是声明,定义调用。每次新构造一个函数
时,尽量遵守这个三个要素来做就可以减少一些差错什么叫函数的声明定义,调用?为了让大家有一
感性的认识,请先看下面这个例子:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void HanShu(void); //子函数声明的第一区域
unsigned char a; //全局变量定义的第二区域
unsigned char b;
unsigned char c;
void HanShu(void) //子函数定义的第三区域
{
a++; //子函数的代码语句
b=b+5;
c=c+6;
}
void main() //主函
{
a=0;
b=0;
c=0;
HanShu() ; //子函数被调用的第四区域
c=a+b;
while(1)
{