分支
一個程序默認是按照代碼的順序執行下來的,有時我們需要選擇性的執行某些語句,這時候就需要分支的功能來實現。選擇合適的分支語句可以提高程序的效率。
if 語句
基本 if 語句
以下是基本 if 語句的結構。
1 2 3 | |
if 語句通過對條件進行求值,若結果為真(非 0),執行語句,否則不執行。
如果主體中只有單個語句的話,花括號可以省略。
if...else 語句
1 2 3 4 5 | |
if...else 語句和 if 語句類似,else 不需要再寫條件。當 if 語句的條件滿足時會執行 if 裏的語句,if 語句的條件不滿足時會執行 else 裏的語句。同樣,當主體只有一條語句時,可以省略花括號。
else if 語句
1 2 3 4 5 6 7 8 9 | |
else if 語句是 if 和 else 的組合,對多個條件進行判斷並選擇不同的語句分支。在最後一條的 else 語句不需要再寫條件。例如,若條件 1 為真,執行主體 1,條件 3 為真而條件 1 和條件 2 都為假,執行主體 3,所有的條件都為假才執行主體 4。
實際上,這一個語句相當於第一個 if 的 else 分句只有一個 if 語句,就將花括號省略之後放在一起了。如果條件相互之間是並列關係,這樣寫可以讓代碼的邏輯更清晰。
在邏輯上,大約相當於這一段話:
解一元二次方程的時候,方程的根與判別式的關係:
- 如果 (\(\Delta<0\)) 方程無解;
- 否則,如果 (\(\Delta=0\)) 方程有兩個相同的實數解;
- 否則 方程有兩個不相同的實數解;
switch 語句
1 2 3 4 5 6 7 8 | |
switch 語句執行時,先求出選擇句的值,然後根據選擇句的值選擇相應的標籤,從標籤處開始執行。其中,選擇句必須是一個整數類型表達式,而標籤都必須是整數類型的常量。例如:
1 2 3 4 5 6 | |
1 2 3 4 5 6 7 8 | |
switch 語句中還要根據需求加入 break 語句進行中斷,否則在對應的 case 被選擇之後接下來的所有 case 裏的語句和 default 裏的語句都會被運行。具體例子可看下面的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
以上代碼運行後輸出的結果為 WIKI 和 Hello World,如果不想讓下面分支的語句被運行就需要 break 了,具體例子可看下面的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
以上代碼運行後輸出的結果為 WIKI,因為 break 的存在,接下來的語句就不會繼續被執行了。最後一個語句不需要 break,因為下面沒有語句了。
處理入口編號不能重複,但可以顛倒。也就是説,入口編號的順序不重要。各個 case(包括 default)的出現次序可任意。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
switch 的 case 分句中也可以選擇性的加花括號。不過要注意的是,如果需要在 switch 語句中定義變量,花括號是必須要加的。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
如何理解 switch
在上文中,用了大量「case 分句」,「case 子句」等用語,實際上,在底層實現中,switch 相當於一組跳轉語句。也因此,有 Duff's Device 這種奇技淫巧,希望瞭解的人可以自行學習。
本页面最近更新:,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:OI-wiki
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用