首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 基礎語法入門 (三):控制流語句完整指南 (if、while、switch、for、goto)

     編輯:C++ 入門

一、選擇結構:if 系列

1. 單分支 if

if (條件) {
    // 條件為真執行
}

2. 雙分支 if-else

if (條件) {
    // 真
} else {
    // 假
}

3. 多條件 if-else if-else

if (條件1) {
} else if (條件2) {
} else if (條件3) {
} else {
    // 以上都不滿足
}

完整示例

#include <iostream>
int main() {
    int i = 13;
    if (i == 10) {
        std::cout << "i 等於 10\n";
    } else if (i == 11) {
        std::cout << "i 等於 11\n";
    } else if (i == 12) {
        std::cout << "i 等於 12\n";
    } else {
        std::cout << "i 不是 10/11/12\n"; // 輸出此行
    }
    return 0;
}

二、循環結構:while / do-while

1. while 先判斷後執行

while (條件) {
    // 條件為真重複執行
}

2. do-while 先執行後判斷 (至少執行一次)

do {
    // 執行體
} while (條件);

示例

int i = 10;
while (i < 20) { i++; }        // 循環結束 i=20
do { i++; } while (i == 19);   // 條件假,僅執行一次,i=21

三、多路選擇:switch

switch (表達式) {
    case 常量1: { 語句; break; }
    case 常量2: { 語句; break; }
    default: { 語句; }
}
  • 表達式類型:整型、字符型、枚舉型 (C++11 類類型需單一轉換函數)。
  • case 標簽必須是**編譯期常量**。
  • break 至關重要:缺失會「貫穿」執行下一 case。
  • default 可選,建議保留處理意外值。

示例

char c = 'L';
switch (c) {
    case 'A': std::cout << "A\n"; break;
    case 'B': std::cout << "B\n"; break;
    case 'C': std::cout << "C\n"; break;
    default:  std::cout << "其他: " << c << '\n'; // 輸出 "其他: L"
}

四、計數循環:for

for (初始化; 條件; 迭代更新) {
    // 循環體
}
  • 初始化:僅執行一次,可聲明變量 (作用域限於 for 內)。
  • 條件:每次迭代前檢查,假則退出。
  • 迭代更新:每次循環體結束後執行。
  • 三部分均可為空:`for (;;)` 為無限循環。

示例

for (int i = 0; i < 10; ++i)
    std::cout << "i = " << i << '\n';

五、無條件跳轉:goto (慎用)

for (int i = 1; i < 10; ++i) {
    for (int j = 1; j < 10; ++j) {
        if (i == 6 && j == 6) goto END;
        std::cout << "i=" << i << ", j=" << j << '\n';
    }
}
END:
std::cout << "跳出雙層循環, i=" << i << '\n';

總結對比表

語句類型關鍵特點最佳實踐
if/else if/else選擇條件靈活、支持任意布爾表達式條件簡單時優先;複雜多條件考慮 switch 或查表
switch多路選擇整型/字符常量匹配、跳轉表優化快枚舉值、狀態機、命令分發首選
while循環先檢查、不定次數條件在循環前已知或循環內更新
do-while循環至少一次、後檢查菜單交互、至少一次嘗試
for計數循環初始化/條件/更新集中、範圍 for (C++11) 遍歷容器已知次數、遍歷容器/範圍首選
goto跳轉無條件、破壞結構極少用;僅用於多層 break 或錯誤統一出口

最佳實踐建議

  1. 優先使用 **範圍 for** (`for (auto& x : container)`) 遍歷容器,避免下標越界。
  2. 條件判斷盡量**扁平化**,避免超過 3 層嵌套 `if`,提取函數或衛語句 (`if (!cond) return;`)。
  3. `switch` 針對枚舉類型時,開啟編譯器警告 (`-Wswitch-enum`),確保覆蓋所有枚舉值。
  4. 循環變量**盡量縮小作用域** (C++11 `for (int i=0; ...)`)。
  5. **拒絕 goto**,除非有極其充分理由且經過代碼審查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved