嗨呀,随手一写就是个bug
1 | int ans=0; |
代码如上所示,令人感到十分非常奇怪的是每次只能循环一次,即打印出来的 i 永远为1
后来才发现是因为50000*50000=25亿
而java 的 int 数据类型范围为 -2^31~ 2^31 大约为21亿
所以25亿会溢出,应该是变为负数
解决方法是每一个50000后加一个字母l,表明是 long 数据类型,即 50000l
修改之后更有趣了,不会只循环一次,但是陷入了死循环…
后来才发现2*ans*ans
是不可能超过50000*50000
的,因为ans本身也是int类型
所以最后把ans改为long类型,代码便可以正常运行了