C語(yǔ)言中常見(jiàn)的幾種流程控制語(yǔ)句
1.goto語(yǔ)句
goto語(yǔ)句是一種無(wú)條件轉(zhuǎn)移語(yǔ)句,goto 語(yǔ)句的使用格式為:
goto 語(yǔ)句標(biāo)號(hào);
其中語(yǔ)句標(biāo)號(hào)是一個(gè)有效的標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符加上一個(gè) ":" 一起出現(xiàn)在函數(shù)內(nèi)某處,執(zhí)行g(shù)oto語(yǔ)句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號(hào)處并執(zhí)行其后的語(yǔ)句;
另外語(yǔ)句標(biāo)號(hào)必須與goto語(yǔ)句同處于一個(gè)函數(shù)中,但可以不在一個(gè)循環(huán)層中;通常goto語(yǔ)句與if條件語(yǔ)句連用,當(dāng)滿足某一條件時(shí),程序跳到標(biāo)號(hào)處運(yùn)行;如下例子:
#include <stdio.h> int main(void){ int i,sum=0; i=1; loop: if(i<=100){ sum=sum+i; i++; goto loop; } printf("%d\n",sum); return 0; }
2.if語(yǔ)句
if使用格式為:
if(condition1) {} else if(condition2) {} else if(condition3) ... else {}
除此之外,if語(yǔ)句之間可以嵌套,如下所示:
3.switch語(yǔ)句
switch的語(yǔ)法格式為:
switch (表達(dá)式) { case 常量1:語(yǔ)句1 case 常量2:語(yǔ)句2 ... default: 語(yǔ)句n+1 }
注意:
1)switch后面括號(hào)內(nèi)的表達(dá)式,其值類型應(yīng)該為整數(shù)類型,包括字符型;
2)可以沒(méi)有default語(yǔ)句,此時(shí)流程轉(zhuǎn)到switch語(yǔ)句的下一條語(yǔ)句執(zhí)行;
3)每一個(gè)分支語(yǔ)句后一般都要加一條break語(yǔ)句,用來(lái)跳出switch語(yǔ)句塊,最后一個(gè)分支可以不加;如將上面的例子改為:
此時(shí)的執(zhí)行結(jié)果為:
這是因?yàn)榉种Ш蟮某A勘磉_(dá)式只會(huì)匹配一次,匹配成功后就會(huì)執(zhí)行該分支后的所有語(yǔ)句,如果不加break,則會(huì)將后面所有分支的語(yǔ)句執(zhí)行完!!
4)多個(gè) case 分支可以共用一組執(zhí)行語(yǔ)句,如下:
case 'A': case 'B': { printf.... }
4.while循環(huán)
語(yǔ)法格式:
while (表達(dá)式) { 語(yǔ)句 }
5.do...while循環(huán)
語(yǔ)法格式:
do { 語(yǔ)句 }while(表達(dá)式);
與while不同的是,do..while的循環(huán)體至少會(huì)被執(zhí)行一次
注意,在 do-while 結(jié)構(gòu)中,while 括號(hào)后的分號(hào)不能丟。
do-while 循環(huán)的執(zhí)行流程是:首先無(wú)條件地執(zhí)行一次循環(huán)體,然后再根據(jù)循環(huán)控制表達(dá)式的值來(lái)判斷是否繼續(xù)執(zhí)行循環(huán)體。若為真,則繼續(xù)執(zhí)行;若為假,則停止執(zhí)行,退出 do-while 循環(huán)。也就是說(shuō),do-while 循環(huán)至少執(zhí)行一次循環(huán)體。
do-while 循環(huán)和 while 循環(huán)的主要差別是:前者至少執(zhí)行一次循環(huán)體,后者有可能一次也不執(zhí)行循環(huán)體。
6.for循環(huán)
語(yǔ)法格式:
for ([表達(dá)式1];[表達(dá)式2];[表達(dá)式3]) 語(yǔ)句
C語(yǔ)言for循環(huán)的流程圖
下面來(lái)看看看如何使用for循環(huán)來(lái)實(shí)現(xiàn)打印一個(gè)連續(xù)數(shù)據(jù)的簡(jiǎn)單程序。創(chuàng)建一個(gè)源文件:for-loop.c,其代碼如下所示 -
#include <stdio.h> void main() { int i = 0; for (i = 1;i <= 10;i++) { printf("%d \n", i); } }
執(zhí)行上面示例代碼,得到以下結(jié)果 -
1
2
3
4
5
6
7
8
9
10
break和continue
break用于終止當(dāng)前層次的循環(huán),而continue用于結(jié)束本次循環(huán),轉(zhuǎn)入下一次循環(huán)
break 語(yǔ)句很重要,用得非常多,初學(xué)者一定要掌握。continue 語(yǔ)句雖然沒(méi)有 break 語(yǔ)句用得多,但也經(jīng)常用到,而且不可或缺,需要用到 continue 的時(shí)候其他語(yǔ)句是無(wú)法替代的。
前面已經(jīng)介紹過(guò) break 語(yǔ)句,它不僅可以跳出“循環(huán)體”,還可以跳出 switch。但事實(shí)上,break 也只能用于這兩種情況。break 語(yǔ)句不能用于循環(huán)語(yǔ)句和 switch 語(yǔ)句之外的任何其他語(yǔ)句中。
不管是 for 循環(huán),還是 while 循環(huán),或者是 do…while 循環(huán),都可以用 break 跳出來(lái),但是 break 只能跳出一層循環(huán)。當(dāng)有多層循環(huán)嵌套的時(shí)候,break只能跳出“包裹”它的最里面的那一層循環(huán),無(wú)法一次跳出所有循環(huán)。
同樣,在多層 switch 嵌套的程序中,break 也只能跳出其所在的距離它最近的 switch。但多層 switch 嵌套實(shí)在是少見(jiàn)。
continue 的用法十分簡(jiǎn)單,其作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,然后進(jìn)行下一次是否執(zhí)行循環(huán)的判定。
總結(jié)
到此這篇關(guān)于C語(yǔ)言中常見(jiàn)的幾種流程控制語(yǔ)句的文章就介紹到這了,更多相關(guān)C語(yǔ)言流程控制語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)與電腦玩剪刀石頭布游戲
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)C語(yǔ)言實(shí)現(xiàn)和電腦玩剪刀石頭布游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-11-11基于Matlab實(shí)現(xiàn)多目標(biāo)粘液霉菌算法的示例代碼
多目標(biāo)粘液霉菌算法(MOSMA),這是最近開(kāi)發(fā)的粘液霉菌算法(SMA)的多目標(biāo)變體,用于處理工業(yè)中的多目標(biāo)優(yōu)化問(wèn)題。本文將用Matlab實(shí)現(xiàn)這一算法,需要的可以參考一下2022-05-05使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊的方法
這篇文章主要介紹了?使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊,代碼分為服務(wù)器代碼和客戶端代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12C語(yǔ)言實(shí)現(xiàn)繪制LoveBeat愛(ài)心曲線的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何溧陽(yáng)C語(yǔ)言實(shí)現(xiàn)繪制LoveBeat愛(ài)心曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03