JAVA int 类整数的最大值是 2 的 31 次方 - 1 = Integer.MAX_VALUE
上次写算法的时候遇到一个求中间值的,我开始写的是
int index = (start + end) / 2;
没想到报错了,排查了一下才发现,start + end 的值超出了 Integer.MAX_VALUE,后优化成
int index = start + (end - start) / 2;
本文介绍了一个常见的Java编程陷阱:当计算两个整数的中间值时,如果直接使用(start+end)/2的方式可能导致整数溢出。文章通过一个实际案例展示了如何避免这种错误,即使用int index = start + (end - start) / 2;的方法来确保计算的正确性。
JAVA int 类整数的最大值是 2 的 31 次方 - 1 = Integer.MAX_VALUE
上次写算法的时候遇到一个求中间值的,我开始写的是
int index = (start + end) / 2;
没想到报错了,排查了一下才发现,start + end 的值超出了 Integer.MAX_VALUE,后优化成
int index = start + (end - start) / 2;

被折叠的 条评论
为什么被折叠?