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