for(;i++;) 執行流程與輸出結果int i = -2;
for (; i++; );
printf("%d\n", i);
i = -2i++ 先使用目前值 -2 判斷真偽(非 0 為真),然後 i 遞增為 -1。條件為真,進入迴圈本體(空語句)。i 現為 -1,條件 i++ 取值 -1(真),i 遞增為 0。i 現為 0,條件 i++ 取值 0(假),i 遞增為 1。條件為假,跳出迴圈。1
for(;;) 三個分號分隔的表達式皆可省略,但分號不可省略。i++,其值為遞增前的值。i 已經完成最後一次遞增(從 0 變 1)。int i = -2;
while (i++) {
; // 空本體
}
printf("%d\n", i); // 輸出 1
for(;i++;) 會在 i 從 -2 遞增至 0 時執行三次空迴圈,最終 i 為 1。理解「條件判斷用舊值、副作用更新新值」是掌握此類題目的核心。