C++ 程式預設循序執行,控制結構提供分支、迴圈、跳轉能力,構建複雜邏輯。
int sum = 0, val = 1;
while (val <= 10) { // 條件為真執行主體
sum += val; // 復合賦值 +=
++val; // 前綴遞增
}
{ ... } 區塊。
int sum = 0;
for (int val = 1; val <= 10; ++val) { // 初始化; 條件; 迭代運算
sum += val;
}
// val 於此處離開作用域 (標準 C++),不可存取
for(;;) 為無限迴圈。
int v1, v2; std::cin >> v1 >> v2;
int lower, upper;
if (v1 <= v2) { lower = v1; upper = v2; }
else { lower = v2; upper = v1; }
else 可省略 (單向分支)。else 永遠匹配最近的未配對 if,與縮排無關。善用區塊 {} 明確結構。
int sum = 0, value;
while (std::cin >> value) { // 串流轉 bool:有效則真
sum += value;
}
std::cout << "Sum is: " << sum << std::endl;
std::cin >> value 回傳串流參考,轉換為 bool 表示讀取成功。
switch (a + 3) {
case 2: case 3: // 多標簽共用代碼
a++; break;
case 1:
a *= a; break;
default: // 以上皆非
a--;
}
case 標簽必須為編譯期常數。break 會繼續執行下一 case (需註解說明)。O(1) 跳轉,比連串 if-else 快。case 值盡量連續/密集,避免巨大稀疏跳轉表 (編譯器可能退化為 if-else)。default 可省略 (無匹配直接跳出)。
do {
// 迴圈主體
} while (condition); // 注意分號結尾
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:: |
除錯循環: 編譯 → 依序修正錯誤 (先修正前幾個,後續常為連帶) → 重新編譯 → 執行測試。
for (int i = -100; i <= 100; ++i) sum += i; → sum = 0 (正負抵銷)。