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(...) { 降低誤加分號概率。