代碼:
for (int i = 10; i > 1; i /= 2) {
printf("%d ", i++);
}
輸出:10 5 3 2,而非預期的 10 5 2。
| 輪次 | 循環開始 i | printf 打印值 | i++ 後 i | i/=2 後 i | 判斷 i>1 |
|---|---|---|---|---|---|
| 1 | 10 | 10 | 11 | 5 | true |
| 2 | 5 | 5 | 6 | 3 | true |
| 3 | 3 | 3 | 4 | 2 | true |
| 4 | 2 | 2 | 3 | 1 | false 結束 |
i++ 是後置遞增:先使用當前值參與 printf,再將 i 加 1。i /= 2 在循環體結束、下一次判斷前執行,作用於已遞增的 i。避免在循環控制變量上混用遞增/遞減與複合賦值,保持邏輯清晰。