51單片機(jī)之C語言-4.5基本語句之條件選擇語句
語句
本文引用地址:http://m.butianyuan.cn/article/201611/319554.htm前面我們講了數(shù)據(jù)類型,運(yùn)算符及表達(dá)式。C語言也是一種語言,既然是語言,一定有連接詞。這些連接詞可以用來表示假設(shè),循環(huán)等等。我們先來看看假設(shè)if語句。這些連接詞有一定的規(guī)則,我們只能按照這些規(guī)則來編寫,否則編譯器無法理解,就出錯了。
第一種形式為基本形式: if
if(表達(dá)式)語句
其語義是:如果表達(dá)式的值為真,則執(zhí)行后面的語句,否則不執(zhí)行該語句。
這個很好理解,if就是’如果’的意思,如果外面下雨,就帶雨傘。在這里“外面下雨”,就是表達(dá)式,如果這個表達(dá)式是對的,就執(zhí)行后面的’帶雨傘’這個動作。
第二種形式為: if-else
if(表達(dá)式)
語句1;
else
語句2;
其語義是:如果表示式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2
其執(zhí)行過程如下圖:
舉個例子,如果外面下雨就步行,否則就騎自行車。如果’外面下雨’是真的那么就執(zhí)行’步行’的動作,否則就執(zhí)行’騎自行車’的動作。
第三種形式為if-else-if形式
前面的表達(dá)式很好理解,只有一個,但是對于多個表達(dá)式怎么辦?這里就用if-else-if語句。其一般形式為:
if(表達(dá)式)
語句1;
else if(表達(dá)式2)
語句2;
else (表達(dá)式3)
語句3;
...
else if(表達(dá)式m)
語句m;
else
語句n;
其語義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個值為真時(shí),則執(zhí)行其對應(yīng)的語句。然后跳到整個if語句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語句n。然后繼續(xù)執(zhí)行后續(xù)程序
在使用if語句中還應(yīng)注意以下問題:
(1) 在三種形式的if語句中,在if關(guān)鍵字后均為表達(dá)式。該表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是其他表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個變量。
例如: if(a=5)語句; if(b)語句; if(a=b)語句;
(2) 在if語句中,條件判斷表達(dá)式必須用括號括起來,在語句之后必須加分號。
(3)在if語句的三種形式中,所有的語句應(yīng)為單個語句,如果要想在滿足條件時(shí)執(zhí)行一組(多個)語句,則必須把這一組語句用{}括起來組成一個復(fù)合語句。但要注意的是在}之后不能再加分號。
(4) 在if嵌套語句中,C語言規(guī)定,else總是與它前面最近的if配對。
例子:
#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. 條件選擇語句switch語句
如果分支語句太多,將會使用很多if語句,這樣導(dǎo)致程序的可讀性很差。這里再來了解一下另外一個條件選擇語句,多分支選擇switch語句,其一般形式為:
switch(表達(dá)式){
case 常量表達(dá)式1: 語句1;break;
case 常量表達(dá)式2: 語句2;break;
...
case 常量表達(dá)式n: 語句n;break;
default :語句n+1;break;
}
其語義是:計(jì)算表達(dá)式的值。并逐個與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語句。注意如果省略break語句,那么CPU會繼續(xù)執(zhí)行表達(dá)式對應(yīng)的常量表達(dá)式后面的語句。比如,在switch(表達(dá)式)中表達(dá)式等于常量表達(dá)式2,如果語句2后面沒有break,那么cpu執(zhí)行完語句2將繼續(xù)執(zhí)行語句3,4,...語句n
現(xiàn)在我們來舉個例子說明.
例4-5-1-2
基本語句之switch
語句創(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個燈
case 1: P1=0XFD;break;//點(diǎn)亮第2個燈
case 2: P1=0XFB;break;//點(diǎn)亮第3個燈
case 3: P1=0XF7;break;//點(diǎn)亮第4個燈
case 4: P1=0XEF;break;//點(diǎn)亮第5個燈
case 5: P1=0XDF;break;//點(diǎn)亮第6個燈
case 6: P1=0XBF;break;//點(diǎn)亮第7個燈
case 7: P1=0X7F;break;//點(diǎn)亮第8個燈
default: P1=0;break;
}
delayMs(255);
}
}
}
void delayUs(uchar t)
{
while(--t);
}
void delayMs(uchar t)
{
while(--t)
{
delayUs(245);
delayUs(245);
}
}
評論