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

C++ 入門筆記:控制結構完整指南 (if、switch、while、for)

     編輯:關於C++

程式執行流程控制

C++ 程式預設循序執行,控制結構提供分支、迴圈、跳轉能力,構建複雜邏輯。

1. while 迴圈 — 條件前測試


int sum = 0, val = 1;
while (val <= 10) { // 條件為真執行主體
    sum += val;     // 復合賦值 +=
    ++val;          // 前綴遞增
}
  • 條件為非零即真,零為假。
  • 主體可為單一陳述式或 { ... } 區塊。
  • 適用於迴圈次數未知、先檢查後執行的場景。

2. for 迴圈 — 計數器管理的語法糖


int sum = 0;
for (int val = 1; val <= 10; ++val) { // 初始化; 條件; 迭代運算
    sum += val;
}
// val 於此處離開作用域 (標準 C++),不可存取
  • 三部份皆為可選:for(;;) 為無限迴圈。
  • 初始化可宣告變數 (作用域限於 for 內)。
  • 適用於已知迴圈次數、計數器驅動的場景。
  • 編譯器易優化計數器至暫存器。

3. if 條件判斷 — 雙向分支


int v1, v2; std::cin >> v1 >> v2;
int lower, upper;
if (v1 <= v2) { lower = v1; upper = v2; }
else { lower = v2; upper = v1; }
  • else 可省略 (單向分支)。
  • 條件同 while:非零真、零假。
  • 巢狀 if-else 配對規則: else 永遠匹配最近的未配對 if,與縮排無關。善用區塊 {} 明確結構。

4. 讀取未知數量輸入 — while 結合串流狀態


int sum = 0, value;
while (std::cin >> value) { // 串流轉 bool:有效則真
    sum += value;
}
std::cout << "Sum is: " << sum << std::endl;
  • std::cin >> value 回傳串流參考,轉換為 bool 表示讀取成功。
  • 遇到 EOF (Windows: Ctrl+Z, Unix: Ctrl+D) 或無效輸入 → 串流失效 → 迴圈結束。
  • 此慣用語是 C++ 處理串流輸入的標準模式。

5. switch 多路分支 — 狀態機的好幫手


switch (a + 3) {
    case 2: case 3: // 多標簽共用代碼
        a++; break;
    case 1:
        a *= a; break;
    default:        // 以上皆非
        a--;
}
  • 條件必須為整數型別 (含 enum、char)。
  • case 標簽必須為編譯期常數。
  • 貫穿特性: 無 break 會繼續執行下一 case (需註解說明)。
  • 實作原理: 編譯器產生跳轉表 (位址陣列),O(1) 跳轉,比連串 if-else 快。
    優化建議: case 值盡量連續/密集,避免巨大稀疏跳轉表 (編譯器可能退化為 if-else)。
  • default 可省略 (無匹配直接跳出)。

6. do-while 迴圈 — 至少執行一次


do {
    // 迴圈主體
} while (condition); // 注意分號結尾
  • 先執行主體,再檢查條件。
  • 適用於選單驅動、至少一次輸入驗證等場景。

7. 迴圈控制:break 與 continue


for (int i = 0; i < 10; ++i) {
    if (i % 3 == 0) continue; // 跳過本次迭代,直接執行 ++i
    if (i % 7 == 0) break;    // 立即跳出整個迴圈
    // 其他處理
}
  • continue:結束本次迭代,跳至迭代運算 (for) 或條件檢查 (while/do-while)。
  • break:立即跳出最內層迴圈或 switch。
  • 巢狀迴圈中,break/continue 僅影響直接所屬的迴圈。

編譯錯誤三大類與除錯循環

類型說明例子
語法錯誤違反語法規則缺分號、括號不匹配、關鍵字拼錯
型別錯誤資料型別不匹配字串傳給需整數的函數
宣告錯誤使用未宣告名稱拼錯變數名、漏 std::

除錯循環: 編譯 → 依序修正錯誤 (先修正前幾個,後續常為連帶) → 重新編譯 → 執行測試。

程式碼格式化原則

  • C++ 格式自由,但一致性 是可讀性關鍵。
  • 建議:函數/區塊大括號獨佔行、縮排對齊運算子、單行註解說明變數用途。
  • 選定風格後全專案貫徹執行。

練習題精選

  1. for (int i = -100; i <= 100; ++i) sum += i; → sum = 0 (正負抵銷)。
  2. 用 for/while 分別實作 50~100 求和、10 遞減印 0、輸入兩數印區間所有數 (每行 10 個)。
  3. 比較 for/while 優劣:for 適合計數器、while 適合條件驅動、do-while 適合至少一次。
  4. 刻意寫含常見錯誤程式,熟悉編譯器訊息。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved