初學 C/C++ 時最容易忽略的細節:變量初始化寫在哪層循環裡,直接決定程序邏輯。兩張截圖對比的是內層循環計數器 y 的初始化位置。
int y = 0;
for (int x = 0; x < 20; x++) {
for (; y < 20; y++) { ... }
}
y 只初始化一次,第一輪外層循環跑完後 y 已變為 20,第二輪外層循環內層條件 y < 20 直接失效,內層循環只執行一次(實際上零次)。
for (int x = 0; x < 20; x++) {
int y = 0; // 每輪外層循環重置
for (; y < 20; y++) { ... }
}
每次進入外層循環,y 重新歸零,內層循環每輪都完整跑 20 次,共執行 20 × 20 = 400 次。
「要在哪裡歸零,就把初始化寫在哪裡。」
調試時在循環入口打印計數器值,一眼就能看穿邏輯漏洞。