欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 初学MCU >> 单片机语言 >> 文章正文

第十一课 C51复合语句和条件语句

     在 C 中是有不少的括号,如{},[],()等,确实会让一些初入门的朋友不解。在 VB 等一些语言中同一个()号会有不一样的 作用,它能用于组合若干条语句形成功能块,能用做数组的下标等,而在 C 中括号的分 工较为明显,{}号是用于将若干条语句组合在一起形成一种功能块,这种由若干条语句组合 而成的语句就叫复合语句。复合语句之间用{}分隔,而它内部的各条语句还是需要以分号“;” 结束。复合语句是允许嵌套的,也是就是在{}中的{}也是复合语句。复合语句在程序运行时,{}中的各行单语句是依次顺序执行的。单片机C语言中能将复合语句视为一条单语句,也就是说 在语法上等同于一条单语句。对于一个函数而言,函数体就是一个复合语句,也许大家会因 此知道复合语句中不单能用可执行语句组成,还能用变量定义语句组成。要注意的是在 复合语句中所定义的变量,称为局部变量,所谓局部变量就是指它的有效范围只在复合语句 中,而函数也算是复合语句,所以函数内定义的变量有效范围也只在函数内部。下面用一段简单的例子简单说明复合语句和局部变量的使用。

#include

#include    // m c u w a y .com

void main(void)

{

unsigned int a,b,c,d; //这个定义会在整个 main 函数中?

SCON = 0x50; //串行口方式 1,允许接收 TMOD = 0x20; //定时器 1 定时方式 2

TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;

TI = 1;

TR1 = 1; //启动定时器

a = 5; b = 6; c = 7;

d = 8; //这会在整个函数有效

printf("0: %d,%d,%d,%d\n",a,b,c,d);

{ //复合语句 1

unsigned int a,e; //只在复合语句 1 中有效

a = 10,e = 100;

printf("1: %d,%d,%d,%d,%d\n",a,b,c,d,e);

{ //复合语句 2

unsigned int b,f; //只在复合语句 2 中有效

b = 11,f = 200;

printf("2: %d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f);

}//复合语句 2 结束

printf("1: %d,%d,%d,%d,%d\n",a,b,c,d,e);

}//复合语句 1 结束

printf("0: %d,%d,%d,%d\n",a,b,c,d);

while(1);

}

运行结果:

0:5,6,7,8

1: 10,6,7,8,100

2: 10,11,7,8,100,200

1: 10,6,7,8,100

0:5,6,7,8 结合以上的说明想想为何结果会是这样。

读完前面的文章大家都会大概对条件语句这个概念有所认识吧?是的,就如学习语文中 的条件语句一样,C 语言也一样是“如果 XX 就 XX”或是“如果 XX 就 XX 不然 XX”。也就是 当条件符合时就执行语句。条件语句又被称为分支语句,也有人会称为判断语句,其关键字 是由 if 构成,这大众多的高级语言中都是基本相同的。C 语言供给了 3 种形式的条件语句:

1: if (条件表达式) 语句 当条件表达式的结果为真时,就执行语句,不然就跳过。 如 if (a==b) a++; 当 a 等于 b 时,a 就加 1

2: if (条件表达式) 语句 1

else 语句 2

当条件表达式成立时,就执行语句 1,不然就执行语句 2 如 if (a==b)

a++;

else

a--;

当 a 等于 b 时,a 加 1,不然 a-1。

3:if (条件表达式 1) 语句 1

else if (条件表达式 2) 语句 2

else if (条件表达式 3) 语句 3

else if (条件表达式 m) 语句 n else 语句 m

这是由 if else 语句组成的嵌套,用来实现多方向条件分支,使用应注意 if 和 else 的配对使用,要是少了一个就会语法出错,记住 else 总是与最临近的 if 相配对。一般条件 语句只会用作单一条件或少数量的分支,如果多数量的分支时则更多的会用到下一篇中的开 关语句。如果使用条件语句来编写超过 3 个以上的分支程序的话,会使程序变得不是那么清晰易读。

普通文章28课:单片机音乐汇编程序设计
普通文章27课:单片机的一些基本概念
普通文章26课:单片机矩阵式键盘接口技术
普通文章c51单片机c语言教程介绍
普通文章第一课 建立你的第一个KeilC51项目
普通文章第二课 HEX文件的生成和MCU最小系统
普通文章第三课 C51语言的数据类型
普通文章第四课 C51常量
普通文章第五课 C51变量
普通文章第六课 C51运算符和表达式
普通文章第七课 运算符和表达式(关系运算符)
普通文章第八课 运算符和表达式(位运算符)
普通文章第九课 C51运算符和表达式(指针和地址
普通文章第十课 C51表达式语句及仿真器
普通文章第十一课 C51复合语句和条件语句
普通文章第十二课 C51开关分支语句
普通文章第十三课 C51循环语句
普通文章第十四课 C51函数
普通文章第十五课 C51数组的使用
普通文章第十六课 C51指针的使用
普通文章第十七课 C51结构、联合和枚举的使用
普通文章附录-运算符优先级和结合性等
普通文章单片机之路教你学会使用Keil软件
普通文章单片机之路教你学会使用Keil软件(续
普通文章单片机之路教你学会使用Keil软件(续

  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电流单位
    普通文章功率单位
    普通文章什么是达林顿管?
    普通文章晶闸管的作用与原理

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com