[C 的那些眉角]迴圈邊界從 0 還是 1 開始?

迴圈邊界從 0 還是 1 開始?踩過幾次坑之後我的判斷邏輯

寫韌體寫了快二十年,for 迴圈大概打過幾萬次了,但「從 0 開始還是從 1 開始」這件事,我到現在還是會停下來想一秒。

不是不會寫,是因為這個東西錯起來特別陰。編譯不會報錯、跑起來大部分時候也正常,偏偏就在某個 buffer 邊界、某個陣列尾巴,悄悄多讀一個 byte 或少寫一格,然後在三天後的某個壓力測試裡爆給你看。

這篇就聊聊我自己的判斷邏輯,以及那些讓我學乖的坑。

閱讀全文