今天写归并排序,二分时用了位运算,结果总是出bug:stack overflow
找了半天才发现原因
int mid = left + (right - left)>>1; //错!>>优先级在+后面
int mid = left + ((right-left)>>1); //正确
int mid = left + (right-left)/2; //正确
查了一下
(1)、移位运算符在乘除加减后面,在比较运算符前面
(2)、按位与、或、异或在比较运算符后面,在逻辑与、或前面