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

C 語言 while 循環分號導致死循環與無輸出問題

     編輯:程式設計疑難解答

錯誤代碼

while(ch < 5);  // ← 這裡多了一個分號
{
    nh = ch * ME;
    printf("%d,%d", ch, nh);
    ch++;
}

原因分析

while(ch < 5); 等同於:

while(ch < 5) {
    ; // 空語句
}

循環體只有空語句,ch 永不遞增,陷入死循環,導致後續代碼(包括大括號內的邏輯)從未執行,故無任何輸出。

修正代碼

while(ch < 5)  // 移除分號
{
    nh = ch * ME;
    printf("%d,%d", ch, nh);
    ch++;
}

調試技巧

  • 編譯器警告:開啟 `-Wall` (GCC/Clang) 或 `/W4` (MSVC) 會提示「while 循環體為空」。
  • IDE 靜態分析:Visual Studio、CLion 會標記可疑分號。
  • 單步調試:觀察程式計數器卡在 `while` 行。

補充:控制台程式閃退問題

若用 F5 (Debug) 執行,程式結束時控制台自動關閉。在 `return 0;` 前加入:

printf("Press Enter to exit...");
getchar(); // 等待用戶按 Enter

或專案屬性 → Linker → System → SubSystem 設為 Console (`/SUBSYSTEM:CONSOLE`),並勾選「偵錯時保持控制台開啟」。

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