c語言雖然沒有限制 if else 能夠處理的分支數量,但當分支過多時,用 if else處理會不太方便,而且容易出現 if else配對出錯的情況。例如,輸入乙個整數,輸出該整數對應的星期幾的中文表示。
if
(day ==0)
printf
("星期天\n");
else
if(day ==1)
printf
("星期一\n");
else
if(day ==2)
printf
("星期二\n");
else
if(day ==3)
printf
("星期三\n");
else
if(day ==4)
printf
("星期四\n");
else
if(day ==5)
printf
("星期五\n");
else
if(day ==6)
printf
("星期六\n");
else
printf
("輸入錯誤。\n"
);
以上**摘自book22.c。
對於這種情況,實際開發中一般使用 switch 語句代替,請看下面的**。
switch
(day)
先不解釋這段**的含義,但這樣看起來舒服多了。
switch 是另外一種選擇結構的語句,用來代替簡單的、擁有多個分枝的 if else語句,基本格式如下:
switch
(表示式)
它的執行過程是:
1)首先計算表示式的值,假設為value。
2) 從第乙個 case 開始,比較value和整型數值1,如果它們相等,就執行冒號後面的所有語句,也就是從語句1一直執行到語句n+1,而不管後面的case 是否匹配成功。
3) 如果value和整型數值1不相等,就跳過冒號後面的語句1,繼續比較第二個case、第三個case……一旦發現和某個整型數值相等了,就會執行後面所有的語句。假設value和整型數值5相等,那麼就會從語句5一直執行到語句n+1。
4)如果直到最後乙個整型數值n都沒有找到相等的值,那麼就執行 default 後的語句n+1。
需要重點強調的是,當和某個整型數值匹配成功後,會執行該分支以及後面所有分支的語句。
示例(book29.c)
/*
* 程式名:book29.c,此程式演示條件分支控制語句用switch代替多個if else
*/#include
intmain()
}
執行效果
輸入4,發現和第四個分支匹配成功,於是就執行第四個分支以及後面的所有分支。這顯然不是我們想要的結果,我們希望只執行第四個分支,而跳過後面的其他分支。為了達到這個目標,必須要在每個分支最後新增break;語句。
break 是c語言中的乙個關鍵字,專門用於跳出 switch 語句。所謂「跳出」,是指一旦遇到break,就不再執行switch中的任何語句,包括當前分支中的語句和其他分支中的語句;也就是說,整個switch執行結束了,接著會執行整個 switch 後面的**。
示例(book30.c)
/*
* 程式名:book30.c,此程式演示條件分支控制語句用switch中break的用法。
*/#include
intmain()
}
執行效果
case後面必須是整數和字元,或者是結果為整數和字元的表示式,但不能包含任何變數。請看下面的例子。
switch
(result)
default 不是必須的。當沒有 default 時,如果所有case都匹配失敗,那麼就什麼都不執行。
編寫示例程式,在介面上輸入數字的月份(1-12),採用switch語句,輸出對應月份的英文單詞的簡寫和全稱。
分支結構(switch)
switch語句用於編寫多分支結構的程式,類似與if elif else語句。switch語句表達的分支結構比if elif else語句表達的更清晰,的可讀性更高 但是python並沒有提供switch語句。python可以通過字典實現switch語句的功能,實現方法分為兩步 首先,定義乙個字典 ...
分支結構之switch篇
switch語句 switch語法 switch 表示式 語義 先得出表示式的結果,根據結果跳轉到相應的case語句塊裡面去執行 表示式結果 常量表示式 就叫相應的case語句塊 如果case 後面的常量表示式沒有乙個跟表示式結果對應的 那麼就跳轉到 default裡面執行語句塊 switch語句的...
C語言 分支結構
邏輯與 邏輯或 的短路現象 一假即假 左邊為假,不執行右邊 一真即真 左邊為真,不執行右邊 列舉一組有符號名稱的整形常量 羅列出所有狀態和所有可能的結果。列舉屬構造型別 enum 列舉名 美劇值列表 if 條件表示式1 else if 條件表示式2 else 條件表示式的返回值為bool型別 swi...