51单片机之C语言-4.5基本语句之条件选择语句
语句
前面我们讲了数据类型,运算符及表达式。C语言也是一种语言,既然是语言,一定有连接词。这些连接词可以用来表示假设,循环等等。我们先来看看假设if语句。这些连接词有一定的规则,我们只能按照这些规则来编写,否则编译器无法理解,就出错了。
第一种形式为基本形式: if
if(表达式)语句
其语义是:如果表达式的值为真,则执行后面的语句,否则不执行该语句。
这个很好理解,if就是’如果’的意思,如果外面下雨,就带雨伞。在这里“外面下雨”,就是表达式,如果这个表达式是对的,就执行后面的’带雨伞’这个动作。
第二种形式为: if-else
if(表达式)
语句1;
else
语句2;
其语义是:如果表示式的值为真,则执行语句1,否则执行语句2
其执行过程如下图:
举个例子,如果外面下雨就步行,否则就骑自行车。如果’外面下雨’是真的那么就执行’步行’的动作,否则就执行’骑自行车’的动作。
第三种形式为if-else-if形式
前面的表达式很好理解,只有一个,但是对于多个表达式怎么办?这里就用if-else-if语句。其一般形式为:
if(表达式)
语句1;
else if(表达式2)
语句2;
else (表达式3)
语句3;
...
else if(表达式m)
语句m;
else
语句n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序
在使用if语句中还应注意以下问题:
(1) 在三种形式的if语句中,在if关键字后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其他表达式,如赋值表达式等,甚至也可以是一个变量。
例如: if(a=5)语句; if(b)语句; if(a=b)语句;
(2) 在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。
(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。
(4) 在if嵌套语句中,C语言规定,else总是与它前面最近的if配对。
例子:
#include
void main(void)
{
int a,b;
scanf_s("%d%d",&a,&b);
//if第一种形式
if (a >= b) printf("The bigger number is %d\n",a);
//if第二种形式
if (a >= b)
{
printf("The bigger number is %d\n", a);
}
else
{
printf("The bigger number is %d\n", b);
}
system("pause");
}
2. 条件选择语句switch语句
如果分支语句太多,将会使用很多if语句,这样导致程序的可读性很差。这里再来了解一下另外一个条件选择语句,多分支选择switch语句,其一般形式为:
switch(表达式){
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
...
case 常量表达式n: 语句n;break;
default :语句n+1;break;
}
其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。注意如果省略break语句,那么CPU会继续执行表达式对应的常量表达式后面的语句。比如,在switch(表达式)中表达式等于常量表达式2,如果语句2后面没有break,那么cpu执行完语句2将继续执行语句3,4,...语句n
现在我们来举个例子说明.
例4-5-1-2
基本语句之switch
语句创建LED流水灯
#include "reg52.h"
typedef unsigned char uchar;
void delayUs(uchar t);
void delayMs(uchar t);
void main(void)
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
switch(i){
case 0: P1=0XFE;break;//点亮第1个灯
case 1: P1=0XFD;break;//点亮第2个灯
case 2: P1=0XFB;break;//点亮第3个灯
case 3: P1=0XF7;break;//点亮第4个灯
case 4: P1=0XEF;break;//点亮第5个灯
case 5: P1=0XDF;break;//点亮第6个灯
case 6: P1=0XBF;break;//点亮第7个灯
case 7: P1=0X7F;break;//点亮第8个灯
default: P1=0;break;
}
delayMs(255);
}
}
}
void delayUs(uchar t)
{
while(--t);
}
void delayMs(uchar t)
{
while(--t)
{
51单片机C语言条件选择语 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)