計(jì)算機(jī)程序基礎(chǔ)教程(09):C語言 - 程序執(zhí)行流程控制語句
【條件判斷語句】
?● if語句
if語句根據(jù)一個(gè)布爾值確定是否執(zhí)行一段代碼。
若布爾值為1,執(zhí)行if內(nèi)代碼,不執(zhí)行else內(nèi)代碼。
若布爾值為0,不執(zhí)行if內(nèi)代碼,執(zhí)行else內(nèi)代碼。
若不需要else語句,也可以不定義。
?● 嵌套if
if語句可以嵌套使用,if代碼段和else代碼段內(nèi)都可以嵌套另一個(gè)if語句。
對(duì)于上述嵌套使用方式,可以使用如下簡(jiǎn)寫形式,代碼更簡(jiǎn)潔。
?● switch case語句
switch case 語句的功能與嵌套 if else 類似,但是有些特定判斷使用 switch case 語句更簡(jiǎn)單,并且編譯器會(huì)對(duì) switch case 語句進(jìn)行一些優(yōu)化,執(zhí)行速度更快。
?● 條件運(yùn)算式
條件運(yùn)算式類似 if else 語句,但是條件運(yùn)算式只是通過布爾值條件返回一個(gè)數(shù)值,不能做其它事,定義方式如下:
條件 ? 數(shù)據(jù)1 : 數(shù)據(jù)2;
條件是一個(gè)布爾值,若為1,則返回?cái)?shù)據(jù)1,否則返回?cái)?shù)據(jù)2。
【循環(huán)語句】
循環(huán)語句用來循環(huán)執(zhí)行一段代碼,循環(huán)條件是一個(gè)布爾值,若為1則循環(huán)執(zhí)行,若為0則退出循環(huán),循環(huán)條件一般是一個(gè)運(yùn)算式,返回一個(gè)布爾值,每次循環(huán)都會(huì)修改參與運(yùn)算的變量,直到運(yùn)算式返回0終止。
?● while循環(huán)
?● for循環(huán)
for循環(huán)是while循環(huán)的另一種使用方式,for將循環(huán)條件的定義、判斷、修改都放在()符號(hào)內(nèi),方便查看和修改。
有些古老的編譯器不支持上述用法,需要使用如下形式:
?● do while循環(huán)
do while 循環(huán)首先執(zhí)行一遍循環(huán)代碼,然后判斷布爾值,若為1則再次循環(huán),否則退出循環(huán)。
while循環(huán)語句執(zhí)行順序如下:
進(jìn)入 while =》 判斷循環(huán)條件 =》 滿足條件 =》 不執(zhí)行跳轉(zhuǎn)、順序執(zhí)行循環(huán)代碼 =》 跳轉(zhuǎn)到 while 起始地址
進(jìn)入 while =》 判斷循環(huán)條件 =》 不滿足條件 =》 執(zhí)行跳轉(zhuǎn)、跳過 while
do while循環(huán)語句執(zhí)行順序如下:
進(jìn)入 do while =》 執(zhí)行循環(huán)代碼 =》 判斷循環(huán)條件 =》 滿足條件 =》 執(zhí)行跳轉(zhuǎn)、跳轉(zhuǎn)到 do while 起始地址
進(jìn)入 do while =》 執(zhí)行循環(huán)代碼 =》 判斷循環(huán)條件 =》 不滿足條件 =》 不執(zhí)行跳轉(zhuǎn)、順序執(zhí)行之后的代碼
每次循環(huán)時(shí),while都會(huì)比do while多一個(gè)跳轉(zhuǎn)指令,為了降低轉(zhuǎn)移預(yù)測(cè)失敗幾率,編譯器會(huì)將while和for轉(zhuǎn)換為do while,轉(zhuǎn)換方式同上C代碼。
【跳轉(zhuǎn)語句】
?● break
break有兩個(gè)作用:
1.終止循環(huán)語句,對(duì)于嵌套使用的循環(huán),只終止break所在的那層循環(huán)。
2.跳過switch case語句。
?● continue
continue用于終止循環(huán)語句的本次循環(huán),執(zhí)行下一次循環(huán),一般與if語句配合使用,在滿足一定條件時(shí)放棄本次循環(huán)。
?● goto
goto用于無條件跳轉(zhuǎn)到一段代碼處執(zhí)行,可以與if語句配合使用,實(shí)現(xiàn)有條件跳轉(zhuǎn)。
【函數(shù)遞歸與循環(huán)】
函數(shù)可以直接或間接調(diào)用自己,從而實(shí)現(xiàn)遞歸執(zhí)行,函數(shù)遞歸與循環(huán)語句都是將一段代碼循環(huán)執(zhí)行,區(qū)別在于循環(huán)語句是在函數(shù)內(nèi)部循環(huán)執(zhí)行,而函數(shù)遞歸是跳轉(zhuǎn)到函數(shù)起始地址處執(zhí)行,此處為設(shè)置函數(shù)??臻g相關(guān)指令,所以每次遞歸都會(huì)消耗一些??臻g,遞歸次數(shù)過多會(huì)導(dǎo)致棧頂超界,并且遞歸執(zhí)行效率也不高。