在两年有余的学习生活中,我不仅在课堂上学到了很多东西,我也在一次次的错误中得到了宝贵的经验和教训。Bug和debug,构成了我生活中不可或缺的一部分。
我在编程中犯过的错误很多,无法一一阐述,再次说一个近期编程遇到的bug。
程序差不多长这样:
int main()
{
blablabla准备工作;
F(blablabla参数);
输出F计算的结果;
return 0;
}
跑了一下,结果不对。于是在调用F之前插入了一条printf,把调用前的准备状态打出来看看对不对。结果,不仅准备状态是对的,结果也变成对的了。然后把那行插入的printf注释掉,结果就又是错的了。
为了验证我真的除了打印啥也没干,把插入的句子改成了printf("a"); 结果 —— 就多出来这个a,之后打印的结果又变成对的了。
把这句printf("a");移到F之后、之前但是中间隔一行语句、放到F内部,结果都是错的…… 唯独放到F的前面一行,结果就神奇地正确了。
最后发现其实bug是发生在F的内部。F内部有个用于累加的变量忘了初始化,没置0就直接做”=”了。