![尴尬 尴尬](http://shared.live.com/nwzz!7qlCjWDT3SRuW3s9g/emoticons/smile_embaressed.gif)
这次在实验室做项目总算是真正自己编写了上千行的代码,对编程有了小小的感性认识。这几天碰到了两个让人头疼的bug,程序在刚开始运行时没问题,可一到计算复杂时就出现莫名错误,反复查看了代码也没什么头绪,最后在单步跟踪时发现了问题,大致情况是这样的,当初设计程序时考虑到变量a的值会很大,于是a的类型设为long int,a = b * c; b和c都是int型,这里a虽然是long int 型,但b*c时,因为b c都是int型,所以b*c的也是int型,当结果非常大时,这个结果会发生溢出,导致a的值是错误的。
解决方法也很简单,只要把b或c改成long int型,这样计算b*c时,结果也是long int型,赋给a的值也就是正确的结果了。