比较int mid = left + ((right - left) >> 1) 和 int mid = (left + right) / 2;

1.第二个会出现两者想加,溢出整性。

2.理解

我们都能理解int mid = left + ((right - left) / 2)    所以,我们只需理解后面不想等的地方,为结果一样。

设  (right - left) = a * (2 ^ n) + b * (2 ^ n - 1) + …… + c * 2 + d;    

那((right - left) / 2)  = a * (2 * n - 1) + b * (2 ^ n - 2) + c;(c语言 "/" 不取余数, 所以没d)

那不就相当于  (right - left) >> 1;

你可能感兴趣的:(数据结构,c语言,css)