代碼片段:
for(i=0; i<300; i++) {
// 處理邏輯
}
// 此處 i 的值是多少?
當循環正常結束(條件 i < 300 變為假)時:
i = 299 執行循環體i++ → i = 300300 < 300 為假,退出循環i = 300| 情況 | 代碼示例 | 結果 |
|---|---|---|
| break 跳出 | if(...) break; | i 為 break 時的值(< 300) |
| goto 跳出 | goto label; | i 為跳轉時的值 |
| return 返回 | return i; | 函數結束,i 生命週期結束 |
| longjmp 非局部跳轉 | longjmp(buf, 1); | i 為 setjmp 時的值 |
| 循環體修改 i | i = 1000; | i 為修改後的值(可能 ≥ 300 導致提前結束) |
// C99 支援在 for 宣告變量,作用域僅限循環內
for (int i = 0; i < 300; i++) { ... }
// 此處 i 不可見(編譯錯誤)
// C89 風格:變量在外部宣告
int i;
for (i = 0; i < 300; i++) { ... }
// 此處 i = 300(若正常結束)
int count = 0; for(...) count++;break 時,考慮用標誌位記錄退出原因