一般来说我们直接写成
Mid = (Right + Left)/2
的形式,但是这个形式存在很多隐患问题。
一般来说这样写比较安全
Mid = Left + (Right - Left)/2
1,整数溢出的情况
代码:
int Right = INT_MAX - 1;
int Left = INT_MAX - 2;
int Mid = (Right + Left) / 2;
cout << Mid << endl;
结果:
结果不是我们所期盼的。那是因为Right + Left的值溢出int的最大值范围了,所以加出来了负数了。