一句话理解
调试是有目的地找出程序错在哪,而不是盲目改。
为什么要学
乱改也许能碰巧过样例,但会把程序改得更乱。
讲解
调试三步:1. 稳定复现错误;2. 缩小范围,找到哪一句开始不对;3. 改完立刻再测。
最朴素的办法是打印中间变量。看到哪一步和手算不一样,错就在附近。
改完不要只测刚才那组数据,把样例和你构造的边界再跑一遍。
例子
cerr << "i=" << i << " sum=" << sum << "\n";
cerr 打印调试信息。有的评测只对比 cout,但养成习惯:提交前删掉或关掉调试输出。
常见错误
- 一次改三处。错更难定位。
- 把调试输出留在 cout 里提交,造成 WA。