謝邀。
C語(yǔ)言為了方便的讓計(jì)算機(jī)執(zhí)行很多次數(shù)的迭代運(yùn)算,提供了循環(huán)語(yǔ)句,我的上一個(gè)回答較為詳細(xì)的介紹了while循環(huán)語(yǔ)句,以及它與遞歸之間的關(guān)系。
的確,C語(yǔ)言還提供了其他兩種循環(huán)語(yǔ)句,供不同的使用環(huán)境,和不同使用習(xí)慣的程序員使用。此外,C語(yǔ)言還提供了break和continue關(guān)鍵字用于控制循環(huán)。下面將一一介紹。
先來(lái)說(shuō)說(shuō)C語(yǔ)言的break和continue關(guān)鍵字
break和continue關(guān)鍵字的區(qū)別還是挺大的,它們的功能是不同的。當(dāng)C語(yǔ)言程序的循環(huán)語(yǔ)句遇到break時(shí),直接
以上代碼,while(1)本應(yīng)是個(gè)死循環(huán),按理說(shuō),程序應(yīng)該永遠(yuǎn)停在while循環(huán)語(yǔ)句里了。但是在cnt等于3的時(shí)候,C語(yǔ)言程序遇到break,于是跳出循環(huán)體,printf()將不再被執(zhí)行。再來(lái)看看continue關(guān)鍵字:
代碼很簡(jiǎn)單,就是把cnt依次從0加一加到4,然后打印出它的值。程序最后輸出:”1,3,4,“,少了2對(duì)不?
這是因?yàn)樵赾nt等于2的時(shí)候,直接就結(jié)束
現(xiàn)在應(yīng)該理解“當(dāng)循環(huán)語(yǔ)句遇到break時(shí),直接跳出
題主應(yīng)注意“整個(gè)”和“本次”這兩個(gè)詞。
另外要說(shuō)明的是,break和continue應(yīng)作為獨(dú)立的語(yǔ)句,要用;結(jié)尾。
現(xiàn)在明白了C語(yǔ)言循環(huán)控制關(guān)鍵字break和continue的功能和區(qū)別了,再來(lái)看看另外兩種循環(huán)語(yǔ)句:do/while循環(huán)語(yǔ)句,和for循環(huán)語(yǔ)句。
C語(yǔ)言的do/while循環(huán)語(yǔ)句
do/while循環(huán)語(yǔ)句和while循環(huán)語(yǔ)句非常像,只是do/while循環(huán)語(yǔ)句把條件表達(dá)式放在后面,它的語(yǔ)法如下:
do{
語(yǔ)句;
}while(條件表達(dá)式);
程序遇到do/while循環(huán)語(yǔ)句后,會(huì)先執(zhí)行循環(huán)體里的語(yǔ)句,到末尾才判斷條件表達(dá)式真假?zèng)Q定是否循環(huán)。
說(shuō)到這里,就看出它與while循環(huán)語(yǔ)句的區(qū)別了:如果條件表達(dá)式為假,while循環(huán)直接就被跳過(guò)了,不會(huì)執(zhí)行;而
編譯執(zhí)行后,程序會(huì)輸出“dowhile”。使用do/while語(yǔ)句要注意的事項(xiàng)和while語(yǔ)句一致,只是還要確保do/while語(yǔ)句的最后while后一定要有“;”,否則編譯器無(wú)法判斷這是一個(gè)do/while循環(huán)的結(jié)尾還是另一個(gè)while循環(huán)的開(kāi)頭。
再來(lái)說(shuō)說(shuō)C語(yǔ)言的for循環(huán)
先看看for循環(huán)的結(jié)構(gòu):
for(控制表達(dá)式1;控制表達(dá)式2;控制表達(dá)式3)
語(yǔ)句
如果不考慮continue(為什么呢,可以思考一下),則for循環(huán)等價(jià)于下面的while循環(huán):
控制表達(dá)式1;
while(控制表達(dá)式2){
語(yǔ)句
控制表達(dá)式3;
}
下面用for循環(huán)來(lái)計(jì)算n!,請(qǐng)看如下C語(yǔ)言代碼:
題主可點(diǎn)我主頁(yè),查看我上一個(gè)回答中使用while循環(huán)語(yǔ)句計(jì)算n!的C語(yǔ)言代碼,對(duì)比和理解二者之間的差異。
++i的作用和i+1;i=i+1;一樣,如果i=0,那么執(zhí)行a=++i;語(yǔ)句后,a等于1,i也等于1。類似還有–i,表示自減。
現(xiàn)在來(lái)分析一下for語(yǔ)句:“i=1”,表示for循環(huán)體里的i從1開(kāi)始;“i<=n”,表示如果i<=n為真,則循環(huán),否則跳出循環(huán);++i表示每執(zhí)行一次循環(huán),就把i加一。
到這里,相信題主已經(jīng)知道C語(yǔ)言循環(huán)語(yǔ)句一大家子和它的管家們(break,continue)了吧,要理解它們的區(qū)別其實(shí)很簡(jiǎn)單,只要把各個(gè)語(yǔ)句的功能和機(jī)制徹底弄懂,應(yīng)該明白,C語(yǔ)言是一門極其重視基本功的編程語(yǔ)言。
歡迎在評(píng)論區(qū)一起討論,質(zhì)疑。文章都是手打原創(chuàng),每天最淺顯的介紹C語(yǔ)言、linux等嵌入式開(kāi)發(fā),喜歡我的文章就關(guān)注一波吧,可以看到最新更新和之前的文章哦。