您的位置 首页 IOT

51单片机之C言语-4.5根本查办之条件挑选查办

1条件选择语句之if语句前面我们讲了数据类型,运算符及表达式。C语言也是一种语言,既然是语言,一定有连接词。这些连接词可以用来表示假

1.条件挑选查办之if

查办

前面咱们讲了数据类型,运算符及表达式。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)

{

delayUs(245);

delayUs(245);

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/263526.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部