假如 int mid = ( left + right ) /2 可能会出现溢出情况
原因:
-
对于int 是一种数据类型,用于定义整数类型变量的标识符,是带符号整数。
-
在现在对计算机中,int 占用 4 字节,32 比特,数据范围为:-2147483648 ~ 2147483647 [-2^31 ~ 2^31-1]。
-
那么对于两个都接近 2147483647 的数字而言,它们相加的结果将会溢出,变成负数。
-
所以,为了避免溢出情况的发生,我们不能使用 mid = (left + right) // 2 来计算 mid 值,而是使用 mid = left + (right - left) // 2 来作为替代。