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

C語言動態數組輸出異常:for循環多餘分號導致邏輯錯誤

     編輯:程式設計疑難解答

錯誤代碼片段

for(i=0; i<num; i++);  // 此處多餘分號導致循環體為空
{
    printf("%3d\n", mark[i]);  // 此塊脫離for循環,僅執行一次,i值為num(越界)
}

現象解析

分號使 for 循環成為空語句,花括號變為獨立代碼塊。循環結束後 i == num,訪問 mark[num] 觸發未定義行為(通常輸出垃圾值或崩潰)。

正確寫法

for(i=0; i<num; i++) {  // 移除分號
    printf("%3d\n", mark[i]);
}

避坑指南

  • 編譯器警告 warning: this 'for' clause does not guard... [-Wmisleading-indentation] 可提示此類問題。
  • 養成「左大括號不換行」習慣:for(...) { 降低誤加分號概率。
  • 使用靜態分析工具(Cppcheck、Clang Static Analyzer)掃描空循環體。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved