新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)之C語(yǔ)言-4.5基本語(yǔ)句之條件選擇語(yǔ)句

        51單片機(jī)之C語(yǔ)言-4.5基本語(yǔ)句之條件選擇語(yǔ)句

        作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
        1.條件選擇語(yǔ)句之if

        語(yǔ)句

        本文引用地址:http://www.104case.com/article/201611/319554.htm

        前面我們講了數(shù)據(jù)類(lèi)型,運(yùn)算符及表達(dá)式。C語(yǔ)言也是一種語(yǔ)言,既然是語(yǔ)言,一定有連接詞。這些連接詞可以用來(lái)表示假設(shè),循環(huán)等等。我們先來(lái)看看假設(shè)if語(yǔ)句。這些連接詞有一定的規(guī)則,我們只能按照這些規(guī)則來(lái)編寫(xiě),否則編譯器無(wú)法理解,就出錯(cuò)了。

        第一種形式為基本形式: if

        if(表達(dá)式)語(yǔ)句

        其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行后面的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。

        這個(gè)很好理解,if就是’如果’的意思,如果外面下雨,就帶雨傘。在這里“外面下雨”,就是表達(dá)式,如果這個(gè)表達(dá)式是對(duì)的,就執(zhí)行后面的’帶雨傘’這個(gè)動(dòng)作。

        第二種形式為: if-else

        if(表達(dá)式)

        語(yǔ)句1;

        else

        語(yǔ)句2;

        其語(yǔ)義是:如果表示式的值為真,則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2

        其執(zhí)行過(guò)程如下圖:

        舉個(gè)例子,如果外面下雨就步行,否則就騎自行車(chē)。如果’外面下雨’是真的那么就執(zhí)行’步行’的動(dòng)作,否則就執(zhí)行’騎自行車(chē)’的動(dòng)作。

        第三種形式為if-else-if形式

        前面的表達(dá)式很好理解,只有一個(gè),但是對(duì)于多個(gè)表達(dá)式怎么辦?這里就用if-else-if語(yǔ)句。其一般形式為:

        if(表達(dá)式)

        語(yǔ)句1;

        else if(表達(dá)式2)

        語(yǔ)句2;

        else (表達(dá)式3)

        語(yǔ)句3;

        ...

        else if(表達(dá)式m)

        語(yǔ)句m;

        else

        語(yǔ)句n;

        其語(yǔ)義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語(yǔ)句。然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語(yǔ)句n。然后繼續(xù)執(zhí)行后續(xù)程序

        在使用if語(yǔ)句中還應(yīng)注意以下問(wèn)題:

        (1) 在三種形式的if語(yǔ)句中,在if關(guān)鍵字后均為表達(dá)式。該表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是其他表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。

        例如: if(a=5)語(yǔ)句; if(b)語(yǔ)句; if(a=b)語(yǔ)句;

        (2) 在if語(yǔ)句中,條件判斷表達(dá)式必須用括號(hào)括起來(lái),在語(yǔ)句之后必須加分號(hào)。

        (3)在if語(yǔ)句的三種形式中,所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句,如果要想在滿(mǎn)足條件時(shí)執(zhí)行一組(多個(gè))語(yǔ)句,則必須把這一組語(yǔ)句用{}括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。但要注意的是在}之后不能再加分號(hào)。

        (4) 在if嵌套語(yǔ)句中,C語(yǔ)言規(guī)定,else總是與它前面最近的if配對(duì)。

        例子:

        #include

        void main(void)

        {

        int a,b;

        scanf_s("%d%d",&a,&b);

        //if第一種形式

        if (a >= b) printf("The bigger number is %dn",a);

        //if第二種形式

        if (a >= b)

        {

        printf("The bigger number is %dn", a);

        }

        else

        {

        printf("The bigger number is %dn", b);

        }

        system("pause");

        }

        2. 條件選擇語(yǔ)句switch語(yǔ)句

        如果分支語(yǔ)句太多,將會(huì)使用很多if語(yǔ)句,這樣導(dǎo)致程序的可讀性很差。這里再來(lái)了解一下另外一個(gè)條件選擇語(yǔ)句,多分支選擇switch語(yǔ)句,其一般形式為:

        switch(表達(dá)式){

        case 常量表達(dá)式1: 語(yǔ)句1;break;

        case 常量表達(dá)式2: 語(yǔ)句2;break;

        ...

        case 常量表達(dá)式n: 語(yǔ)句n;break;

        default :語(yǔ)句n+1;break;

        }

        其語(yǔ)義是:計(jì)算表達(dá)式的值。并逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語(yǔ)句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語(yǔ)句。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語(yǔ)句。注意如果省略break語(yǔ)句,那么CPU會(huì)繼續(xù)執(zhí)行表達(dá)式對(duì)應(yīng)的常量表達(dá)式后面的語(yǔ)句。比如,在switch(表達(dá)式)中表達(dá)式等于常量表達(dá)式2,如果語(yǔ)句2后面沒(méi)有break,那么cpu執(zhí)行完語(yǔ)句2將繼續(xù)執(zhí)行語(yǔ)句3,4,...語(yǔ)句n

        現(xiàn)在我們來(lái)舉個(gè)例子說(shuō)明.

        例4-5-1-2

        基本語(yǔ)句之switch

        語(yǔ)句創(chuàng)建

        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;//點(diǎn)亮第1個(gè)燈

        case 1: P1=0XFD;break;//點(diǎn)亮第2個(gè)燈

        case 2: P1=0XFB;break;//點(diǎn)亮第3個(gè)燈

        case 3: P1=0XF7;break;//點(diǎn)亮第4個(gè)燈

        case 4: P1=0XEF;break;//點(diǎn)亮第5個(gè)燈

        case 5: P1=0XDF;break;//點(diǎn)亮第6個(gè)燈

        case 6: P1=0XBF;break;//點(diǎn)亮第7個(gè)燈

        case 7: P1=0X7F;break;//點(diǎn)亮第8個(gè)燈

        default: P1=0;break;

        }

        delayMs(255);

        }

        }

        }

        void delayUs(uchar t)

        {

        while(--t);

        }

        void delayMs(uchar t)

        {

        while(--t)

        {

        delayUs(245);

        delayUs(245);

        }

        }



        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 资兴市| 封开县| 淮滨县| 太原市| 会泽县| 襄城县| 哈巴河县| 南安市| 自贡市| 花莲市| 怀柔区| 利津县| 沙洋县| 沾益县| 黔江区| 禄劝| 嘉义县| 楚雄市| 灵川县| 泰和县| 庐江县| 绥棱县| 石泉县| 衡阳县| 北票市| 九龙城区| 湘乡市| 乌兰察布市| 屯留县| 普兰县| 广德县| 华宁县| 临西县| 宜州市| 永登县| 滦南县| 苏州市| 江门市| 赫章县| 自治县| 札达县|