- C 程式設計教程
- C - 首頁
- C 語言基礎
- C - 概述
- C - 特性
- C - 歷史
- C - 環境設定
- C - 程式結構
- C - Hello World
- C - 編譯過程
- C - 註釋
- C - 詞法單元
- C - 關鍵字
- C - 識別符號
- C - 使用者輸入
- C - 基本語法
- C - 資料型別
- C - 變數
- C - 整數提升
- C - 型別轉換
- C - 型別強制轉換
- C - 布林型別
- C 語言中的常量和字面量
- C - 常量
- C - 字面量
- C - 轉義序列
- C - 格式說明符
- C 語言中的運算子
- C - 運算子
- C - 算術運算子
- C - 關係運算符
- C - 邏輯運算子
- C - 位運算子
- C - 賦值運算子
- C - 一元運算子
- C - 自增和自減運算子
- C - 三元運算子
- C - sizeof 運算子
- C - 運算子優先順序
- C - 其他運算子
- C 語言中的決策
- C - 決策
- C - if 語句
- C - if...else 語句
- C - 巢狀 if 語句
- C - switch 語句
- C - 巢狀 switch 語句
- C 語言中的迴圈
- C - 迴圈
- C - while 迴圈
- C - for 迴圈
- C - do...while 迴圈
- C - 巢狀迴圈
- C - 無限迴圈
- C - break 語句
- C - continue 語句
- C - goto 語句
- C 語言中的函式
- C - 函式
- C - 主函式
- C - 按值傳遞函式
- C - 按引用傳遞函式
- C - 巢狀函式
- C - 可變引數函式
- C - 使用者自定義函式
- C - 回撥函式
- C - return 語句
- C - 遞迴
- C 語言中的作用域規則
- C - 作用域規則
- C - 靜態變數
- C - 全域性變數
- C 語言中的陣列
- C - 陣列
- C - 陣列的特性
- C - 多維陣列
- C - 將陣列傳遞給函式
- C - 從函式返回陣列
- C - 可變長陣列
- C 語言中的指標
- C - 指標
- C - 指標和陣列
- C - 指標的應用
- C - 指標運算
- C - 指標陣列
- C - 指標到指標
- C - 將指標傳遞給函式
- C - 從函式返回指標
- C - 函式指標
- C - 指向陣列的指標
- C - 指向結構體的指標
- C - 指標鏈
- C - 指標與陣列
- C - 字元指標和函式
- C - 空指標
- C - void 指標
- C - 野指標
- C - 解引用指標
- C - 近、遠和巨型指標
- C - 指標陣列的初始化
- C - 指標與多維陣列
- C 語言中的字串
- C - 字串
- C - 字串陣列
- C - 特殊字元
- C 結構體和聯合體
- C - 結構體
- C - 結構體和函式
- C - 結構體陣列
- C - 自引用結構體
- C - 查詢表
- C - 點 (.) 運算子
- C - 列舉 (或 enum)
- C - 結構體填充和打包
- C - 巢狀結構體
- C - 匿名結構體和聯合體
- C - 聯合體
- C - 位域
- C - typedef
- C 語言中的檔案處理
- C - 輸入 & 輸出
- C - 檔案 I/O (檔案處理)
- C 預處理器
- C - 預處理器
- C - 指令
- C - 預處理器運算子
- C - 宏
- C - 標頭檔案
- C 語言中的記憶體管理
- C - 記憶體管理
- C - 記憶體地址
- C - 儲存類
- 其他主題
- C - 錯誤處理
- C - 可變引數
- C - 命令執行
- C - 數學函式
- C - static 關鍵字
- C - 隨機數生成
- C - 命令列引數
- C 程式設計資源
- C - 問答
- C - 快速指南
- C - 速查表
- C - 有用資源
- C - 討論
C - 決策
包括 C 在內的每種程式語言都具有決策語句來支援條件邏輯。C 提供了許多替代方案來在程式碼中新增決策。
任何過程都是三種邏輯型別的組合:
- 順序邏輯
- 決策或分支
- 重複或迭代
計算機程式本質上是順序的,預設情況下從上到下執行。C 中的決策語句提供了替代的執行路徑。您可以要求一組語句重複執行,直到滿足某個條件。
決策結構根據條件控制程式流程。它們是設計複雜演算法的重要工具。
我們在 C 程式的決策語句中使用以下關鍵字和運算子:if、else、switch、case、default、goto、?: 運算子、break 和continue 語句。
在程式設計中,我們會遇到需要做出一些決策的情況。根據這些決策,我們決定接下來該做什麼。類似的情況也出現在演算法中,我們需要做出一些決策,並根據這些決策執行下一塊程式碼。
下一條指令取決於布林表示式,即條件是否被確定為真或假。C 程式語言將任何非零和非空值視為真,如果它是零或空,則將其視為假值。
C 程式語言提供以下型別的決策語句。
| 序號 | 語句 & 說明 |
|---|---|
| 1 | if 語句 if 語句由一個布林表示式後跟一個或多個語句組成。 |
| 2 | if...else 語句 if 語句後面可以跟一個可選的else 語句,當布林表示式為假時執行該語句。 |
| 3 | 巢狀 if 語句 您可以在另一個if 或else-if 語句內使用一個if 或else-if 語句。 |
| 4 | switch 語句 switch 語句允許將變數與其值列表進行相等性測試。 |
| 5 | 巢狀 switch 語句 您可以在另一個switch 語句內使用一個switch 語句。 |
C 程式語言中的 if 語句
if 語句用於根據真或假的輸出在兩個路徑之間做出決策。它由以下流程圖表示:
語法
if (Boolean expr){
expression;
. . .
}
if 語句由一個布林表示式後跟一個或多個語句組成。
C 程式語言中的 if...else 語句
if-else 語句在條件不滿足時提供備用路徑。
語法
if (Boolean expr){
expression;
. . .
}
else{
expression;
. . .
}
if 語句後面可以跟一個可選的else 語句,當布林表示式為假時執行該語句。
C 程式語言中的巢狀 if 語句
巢狀 if 語句需要構建複雜的決策樹,評估多個巢狀條件以實現細緻的程式流程。
您可以在另一個if 或else-if 語句內使用一個if 或else-if 語句。
C 程式語言中的 switch 語句
switch 語句透過評估單個變數與多個值,根據匹配執行特定程式碼,簡化多路選擇。它允許將變數與其值列表進行相等性測試。
語法
switch(expression) {
case constant-expression :
statement(s);
break; /* optional */
case constant-expression :
statement(s);
break; /* optional */
/* you can have any number of case statements */
default : /* Optional */
statement(s);
}
與 if 語句一樣,您可以在另一個 switch 語句內使用一個 switch 語句。
C 程式語言中的 ?: 運算子
我們在上一章中介紹了條件運算子 (?:),它可以用來替換if-else 語句。它將 if-else 語句壓縮成一個表示式,提供簡潔易讀的程式碼。
它具有以下一般形式:
Exp1 ? Exp2 : Exp3;
其中 Exp1、Exp2 和 Exp3 是表示式。請注意冒號 (:) 的使用和位置。? 表示式的值如下確定:
計算 Exp1。如果為真,則計算 Exp2 併成為整個? 表示式的值。
如果 Exp1 為假,則計算 Exp3,其值成為: 表示式的值。
您可以使用? 運算子模擬巢狀 if 語句。您可以在現有? 運算子的真和/或假運算元中使用另一個三元運算子。
演算法也可以具有迭代邏輯。在 C 中,提供while、do–while 和for 語句來形成迴圈。
while 和do–while 形成的迴圈是條件迴圈,而for 語句形成計數迴圈。
迴圈也受布林表示式的控制。C 編譯器根據條件決定是否再次重複迴圈塊。
迴圈中的程式流程也受不同的跳轉語句控制。break 和continue 關鍵字導致迴圈終止或執行下一個迭代。
C 程式語言中的 Break 語句
在 C 中,break 語句用於 switch-case 結構以及迴圈中。當在迴圈內使用時,它會導致重複被放棄。
C 程式語言中的 Continue 語句
在 C 中,continue 語句導致執行迴圈的條件測試和增量部分。
C 程式語言中的 Goto 語句
C 還有一個goto 關鍵字。您可以將程式流重定向到程式中的任何帶標籤的指令。
以下是 C 中 goto 語句的語法:
goto label; .. . label: statement;
使用 goto 語句,可以將流程重定向到任何上一步或任何後續步驟。
在本章中,我們簡要概述了 C 中的決策語句。在後續章節中,我們將對這些決策語句中的每一個進行詳細解釋,並提供合適的示例。