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

C++ 基礎進階:流程控制語句(goto、continue、break、switch)

     編輯:關於C++

goto:被遺棄的「萬能跳轉」

goto 能無條件跳轉至標籤處,語法:

bool done = false;
startPoint:
// do some stuff
if (!done) goto startPoint; // 循環直到 done 為真

為何現代 C++ 棄用 goto?

  • 任何 goto 能做的事,while/do-while/for 結構化迴圈皆可替代且更清晰。
  • 濫用導致「麵條代碼」,破壞封裝、難以維護。
  • C++ 豐富的控制結構已讓 goto 顯得多餘。

唯一合理場景:從多層巢狀迴循一次跳出(類似緊急逃生窗),但仍建議以 bool 標誌或函數 return 替代。

迴循控制雙雄:continue 與 break

continue:跳過本輪剩餘,直奔下一輪判斷

while (!done) {
    bool error = SomeFunction();
    if (error) continue; // 錯誤時跳過後續邏輯
    // 正常處理邏輯
}

break:立即終止整個迴循

int index = -1;
for (int i = 0; i < numElements; ++i) {
    if (myArray[i] == searchNumber) {
        index = i;
        break; // 找到即停止搜尋
    }
}

善用兩者可大幅簡化迴循邏輯,避免深層 if 巢狀。

switch:多重分支的優雅寫法

switch (amountOverSpeedLimit) {
    case 0:   fine = 0; break;
    case 10:  fine = 20; break;
    case 15:  fine = 20; break;
    case 20:
    case 25:
    case 30:  fine = amountOverSpeedLimit * 10; break; // 合併 case
    default:  fine = GoToCourt(); jailTime = GetSentence(); break;
}

關鍵規則

  • 每個 case 結尾 必加 break,否則會「貫穿」執行下一個 case(除非刻意利用貫穿合併邏輯)。
  • default 分支不可省略,哪怕只放 break,也能防禦未來擴充漏判。
  • 表達式必須為整數型別(含 enum、char),不可為浮點數或字串。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved