--C控制語(yǔ)句總結(jié):
一種完備的編程語(yǔ)言應(yīng)該為程序員提供以下三種程序流:
1.順序執(zhí)行語(yǔ)句序列(順序); 2.在滿足某個(gè)條件之下反復(fù)執(zhí)行一個(gè)語(yǔ)句序列(循環(huán)); 3.通過(guò)進(jìn)行一個(gè)判斷在兩個(gè)可選的語(yǔ)句序列之間選擇執(zhí)行(分支); 舉個(gè)例子: 大家靜下心來(lái)想想,其實(shí)在日常生活中,我們?cè)诎才抛约旱男袨榛顒?dòng)時(shí)大致也就這三類情況。比如我們坐地鐵,(順序開(kāi)始:)先要走出校門,然后找地鐵站,然后去售票機(jī)投幣買票。(循環(huán)開(kāi)始:)發(fā)現(xiàn)到黑龍江大學(xué)票價(jià)是三元,那么在我投幣數(shù)小于三元的情況下我就要一直往里投一元硬幣,投了三次(此時(shí)錢數(shù)等于三元,而不是小于三元啦),售票機(jī)就吐票了。(判斷開(kāi)始:)到了上車時(shí)我還要判斷坐往哪個(gè)方向開(kāi)的車吧,有兩個(gè)方向:一個(gè)開(kāi)往哈東站,一個(gè)開(kāi)往哈南站。在我要去黑大的情況下,我當(dāng)然是坐開(kāi)往哈南站的。是不是很佩服當(dāng)年編寫這些編程語(yǔ)言的計(jì)算機(jī)工程師們對(duì)生活行為的強(qiáng)大歸納總結(jié)能力啊。 順序執(zhí)行語(yǔ)句順序(順序)相信大家都比較好理解,就是一句接著一句的執(zhí)行唄。循環(huán)控制語(yǔ)句主要涉及的控制型關(guān)鍵字:while、for、do while。分支控制循環(huán)語(yǔ)句主要涉及的控制型關(guān)鍵字:if else、switch break。
--while、for常用循環(huán)語(yǔ)句:
--while語(yǔ)句: 如果大家自己寫過(guò)程序,即使是簡(jiǎn)單的小段程序也會(huì)接觸到while。大家在學(xué)習(xí)單片機(jī)沒(méi)有移植系統(tǒng)時(shí)(也就是裸機(jī)跑程序時(shí))其實(shí)程序主體就是在一個(gè)while(1){程序主體};的死循環(huán)里不斷的跑,遇到中斷時(shí)出去執(zhí)行完中斷然后回到程序中,也就是前臺(tái)、后臺(tái)的概念。一般復(fù)雜和實(shí)時(shí)性要求不高的小系統(tǒng)很適合這樣的程序,比如微波爐、電話機(jī)、玩具等等。 while(1){};怎么就死循環(huán)了呢。先來(lái)介紹介紹,一般形式為: while(表達(dá)式){執(zhí)行語(yǔ)句}; while語(yǔ)句是先判斷后執(zhí)行,執(zhí)行語(yǔ)句部分被稱為循環(huán)體。若表達(dá)式為真,就執(zhí)行循環(huán)體。若表達(dá)式為假,可能就一次都不執(zhí)行。 什么是真呢?對(duì)于C語(yǔ)言來(lái)說(shuō),一個(gè)真表達(dá)式的值為1,一個(gè)假表達(dá)式為0。前面所得死循環(huán)就會(huì)永遠(yuǎn)的循環(huán)下去,因?yàn)?永遠(yuǎn)為真: while(1) { 循環(huán)體; } 還有哪些是真?表達(dá)式為數(shù)值:其實(shí)可以說(shuō)所有非零值都會(huì)被認(rèn)為是真,只有0被認(rèn)為是假。甚至負(fù)數(shù)也會(huì)被認(rèn)為是真。 也就是說(shuō)while(3){循環(huán)體;}和while(-1){循環(huán)體;}也都是死循環(huán)。 表達(dá)式為語(yǔ)句時(shí):表達(dá)式的形式是多樣的,要具體判斷表達(dá)式說(shuō)的是不是真,是真執(zhí)行。 下邊有兩段while循環(huán)語(yǔ)句 /*while語(yǔ)句1*/ int i=2; while(i==2) { 循環(huán)體; } /*while語(yǔ)句2*/ int a=10; while(a-->0) { 循環(huán)體;
} 語(yǔ)句1會(huì)進(jìn)入循環(huán),因?yàn)閕等于2這件事是真的,并且會(huì)一直等于下去,所以循環(huán)體也會(huì)一直循環(huán)下去。語(yǔ)句2會(huì)進(jìn)入循環(huán),因?yàn)閍=10>0這件事也是真的,但當(dāng)a不斷自己減1(“--”為運(yùn)算符,表示自己減小1,即a=a-1;)當(dāng)a=0時(shí),a=0>0這件事就是假了,所以就會(huì)跳出循環(huán)體。 --for語(yǔ)句:
for循環(huán)把所有的三種動(dòng)作(初始化、檢測(cè)、更新)都放在一起。它的一般形式為: for(<表達(dá)式1>;<表達(dá)式2>;<表達(dá)式3>)語(yǔ)句; 表達(dá)式1:賦值表達(dá)式。 表達(dá)式2:關(guān)系表達(dá)式或邏輯表達(dá)式,是循環(huán)的控制條件。 表達(dá)式3:一般為賦值表達(dá)式,使控制變量增大或減小。 其實(shí)對(duì)于表達(dá)式1、2、3和后面的執(zhí)行語(yǔ)句當(dāng)不使用時(shí)都是可以省略的,但是那兩個(gè)分號(hào);是不能省略的。 下邊列舉for語(yǔ)句幾種常用的變形: 1.for( ; ;)語(yǔ)句; 這是一個(gè)死循環(huán),循環(huán)體會(huì)永遠(yuǎn)的執(zhí)行下去。 2.for( ;表達(dá)式2;表達(dá)式3)語(yǔ)句;
可見(jiàn)這種情況沒(méi)有對(duì)初始值進(jìn)行賦值,所以當(dāng)初始值不是已知固定的,而是由前邊的程序運(yùn)算得到的,應(yīng)該使用這種形式。例如: i=a-3; for( ;i<k;i++){循環(huán)體}; 3.for(表達(dá)式1;表達(dá)式2;)語(yǔ)句;
一般在控制變量在循環(huán)體里有更新的時(shí)候使用這種形式。 for(i=1;i<88) { i=i*4+5;
} 4.for(表達(dá)式1;表達(dá)式2;表達(dá)式3); 如果所有的工作都在表達(dá)式1、2、3中完成了,那就沒(méi)必要非要加個(gè)語(yǔ)句。直接以分號(hào)瀟灑的結(jié)尾吧。 5.for(i=1,j=a;i<j;i++,j--)語(yǔ)句; 表達(dá)式1和表達(dá)式3都可以有一項(xiàng)或多項(xiàng),多項(xiàng)時(shí)用逗號(hào),隔開(kāi)。
--if常用分支語(yǔ)句:
在C語(yǔ)言里,if是控制型關(guān)鍵字。下邊列舉總能用到的if...else...條件判斷語(yǔ)句的變形形式。 1./*只有if判斷沒(méi)有else的情況*/ 簡(jiǎn)單形式的if語(yǔ)句可以選擇執(zhí)行或忽略一個(gè)動(dòng)作。 if(條件表達(dá)式) { 執(zhí)行表達(dá)式1;
執(zhí)行表達(dá)式2;
...
} 2./*既有if還有else的情況*/ if else語(yǔ)句使程序能在兩個(gè)動(dòng)作之間進(jìn)行選擇。 if(條件表達(dá)式)
{ 執(zhí)行表達(dá)式1;
執(zhí)行表達(dá)式2;
...
}else{
執(zhí)行表達(dá)式3;
執(zhí)行表達(dá)式4;
... } 3./*有多個(gè)if...else...嵌套的情況*/
else if實(shí)際上是一種變形,else if相當(dāng)于另一個(gè)if else語(yǔ)句的else語(yǔ)句部分。 if(條件表達(dá)式1)
{ 執(zhí)行表達(dá)式1;
執(zhí)行表達(dá)式2;
...
}else if(條件表達(dá)式2) {
執(zhí)行表達(dá)式3;
執(zhí)行表達(dá)式4;
... }else{
執(zhí)行表達(dá)式5;
執(zhí)行表達(dá)式6;
... }
這次在文章里多多少少涉及到了點(diǎn)運(yùn)算符,如--、==、<之類的,大家可以先自己看看。下周就開(kāi)始運(yùn)算符相關(guān)的內(nèi)容了,堅(jiān)持、奮斗。
以下是本系列教程文章列表:歡迎大家踴躍討論,有問(wèn)題可在51黑論壇回帖提出.
C語(yǔ)言基礎(chǔ)教程(1):http://www.zg4o1577.cn/bbs/dpj-41177-1.html C語(yǔ)言教程(2)-關(guān)鍵字 變量:http://www.zg4o1577.cn/bbs/dpj-41178-1.html C語(yǔ)言教程(3)-控制語(yǔ)句:http://www.zg4o1577.cn/bbs/dpj-41179-1.html C語(yǔ)言教程(4)-運(yùn)算符:http://www.zg4o1577.cn/bbs/dpj-41180-1.html C語(yǔ)言教程(5)-函數(shù):http://www.zg4o1577.cn/bbs/dpj-41181-1.html C語(yǔ)言教程(6)-數(shù)組與函數(shù)指針:http://www.zg4o1577.cn/bbs/dpj-41182-1.html
51單片機(jī)教程:http://www.zg4o1577.cn/bbs/mcu-xuexi-1.html STM32教程:http://www.zg4o1577.cn/bbs/dpj-41167-1.html
|