本單元常犯錯誤總覽
本單元的「常犯錯誤」比較特別——程式碼的慣犯清單已經整理在 15.3,這裡收的是查錯行為本身的反模式:
| # | 反模式 | 症狀/後果 | 正確做法 |
|---|---|---|---|
| 1 | 沒找到會錯的測資就憑感覺改程式碼重交 | 吃罰時、浪費提交次數,還可能把對的改壞 | 先找到會錯的測資,讓證據指路(15.1) |
| 2 | 同一份程式碼一交再交,期待結果不同 | 浪費提交次數;就算貼著時限僥倖翻成 AC,那是運氣不是修正 | 程式沒改,就沒有理由期待結果改變;回到查錯流程 |
| 3 | 印了一堆變數,卻沒寫下對照用的預期值 | 盯著一螢幕數字,看不出哪個錯 | 每個印出的值先手算預期,逐一對照(15.5) |
| 4 | 範例測資過了就提交 | 邊界情況 WA | 提交前掃一遍極端測資清單(15.6) |
| 5 | 查錯輸出用 cout 印、或忘了清就提交 |
混進答案變 WA;量大還會 TLE | 用 cerr+提交前清理,或 #ifdef LOCAL(15.5) |
| 6 | 改對了,但不知道為什麼對 | 同一顆雷下次原地再踩 | 修完回頭解釋:原本的 bug 如何造出那個錯輸出(15.1 步驟 5) |