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

C語言 do-while 迴圈搭配 continue 的執行流程深度解析

     編輯:C 語言問答

原始程式碼

#include <stdio.h>

int main(void) {
    int i = 0, s = 0;
    do {
        if (i % 2) {
            i++;
            continue;
        }
        i++;
        s += i;
    } while (i < 5);
    printf("%d\n", s);
    return 0;
}

逐步執行追蹤

關鍵在於理解 `continue` 在 `do-while` 中的行為:它會**跳過本次迴圈剩餘敘述,直接跳到 `while` 判斷條件**。

迴圈次數開始 ii%2 結果執行路徑i 變化s 變化結束 i結束 s
100 (假)略過 if 區塊 → i++ → s+=i0→10→111
211 (真)進入 if → i++ → continue → 跳過 s+=i1→2不變21
320 (假)略過 if → i++ → s+=i2→31→434
431 (真)進入 if → i++ → continue → 跳過 s+=i3→4不變44
540 (假)略過 if → i++ → s+=i4→54→959

結果解析

迴圈在 `i` 變為 5 時結束(`i < 5` 為假),最終輸出 s = 9。

常見誤區釐清

誤區:以為 `continue` 後面的 `i++` 和 `s+=i` 永遠不會執行。

事實:`continue` 只影響**當次**迴圈。當 `i` 為偶數時,`if (i%2)` 為假,**不會進入 if 區塊**,因此會正常執行後面的 `i++` 和 `s+=i`。只有當 `i` 為奇數時,才會觸發 `continue` 跳過累加。

等效邏輯重寫

同樣邏輯用 `while` 迴圈更直觀:

int i = 0, s = 0;
while (i < 5) {
    if (i % 2 == 0) {  // 偶數才累加
        i++;
        s += i;
    } else {           // 奇數只遞增 i
        i++;
    }
}

這個範例完美展示了 `continue` 在迴圈中的跳轉機制,是掌握流程控制的優秀練習題。

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