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

C++ 基礎語法精講(二):流程控制與迴圈完整指南

     編輯:關於C++

if 條件判斷陳述式

if 用於測試條件,條件為真時執行對應程式碼區塊。

常見錯誤:分號陷阱

if (x == 10);  // 錯誤!多餘分號導致空陳述式
DoSomething(x); // 總會執行,不受條件控制

編譯器不會警告,因為語法合法但邏輯錯誤。

多行陳述式需用大括號

if (x > 10) {
    cout << "The number is greater than 10" << endl;
    DoSomethingWithNumber(x);
}

條件表達式簡寫

// 等價寫法
if (fileGood) ReadData();
// 等同於
if (fileGood == true) ReadData();

非零值視為 true,零值視為 false。可用 ! 邏輯非測試 false:

bool fileGood = OpenSomeFile();
if (!fileGood) ReportError();

if-else 完整結構

if (cond_expr_1) {
    true_statements_1;
}
else if (cond_expr_2) {
    true_statements_2;
}
else {
    false_statements;
}

迴圈結構詳細解析

所有迴圈共同要素:起點、迴圈本體、終點、終止條件、可選的 break/continue。

for 迴圈

for (initial; cond_expr; adjust) {
    statements;
}

經典範例:

for (int i = 0; i < 10; ++i) {
    cout << "This is iteration " << i << endl;
}

while 迴圈

僅在迴圈開始前檢查條件:

int x;
while (x < 1000) {
    x = DoSomeCalculation();
}

// 使用 bool 旗標控制
bool done = false;
while (!done) {
    // some code
    done = SomeFunctionReturningABool();
}

do-while 迴圈

至少執行一次,條件檢查在迴圈結尾:

bool done = false;
do {
    // some code
    done = SomeFunctionReturningABool();
} while (!done);

goto 與標籤(不建議使用)

bool done = false;
startPoint:
// do some stuff
if (!done) goto startPoint;

最佳實踐:任何 goto 邏輯均可用 while/do-while 替代,優秀 C++ 程式設計師極少使用 goto。

迴圈控制關鍵字

關鍵字行為適用場景
continue跳過本次迴圈剩餘程式碼,直接進入下一次迭代錯誤發生時略過後續處理
break立即終止整個迴圈搜尋找到目標、錯誤需中止
// continue 範例
while (!done) {
    bool error = SomeFunction();
    if (error) continue;  // 跳過後續程式碼
    // 只有無錯誤才執行
}

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

switch 多重選擇陳述式

進階 if,依運算式結果執行對應區塊:

switch (amountOverSpeedLimit) {
    case 0:
        fine = 0; break;
    case 10: case 15:
        fine = 20; break;
    case 20: case 25: case 30:
        fine = amountOverSpeedLimit * 10; break;
    default:
        fine = GoToCourt();
        jailTime = GetSentence();
}
  • break 結束 switch,避免貫穿
  • default 處理所有未匹配情況
  • 同一 case 可堆疊多個值

進階主題導引

結構、指標、引用、函數、類別等進階 C++ 內容,建議參考專業教材深入學習。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved