问题:刚在力扣上遇到一道二分查找的题:有序数组中的单一元素。我的代码运行时出现了数组越界的情况,复查之后发现可能导致越界的地方是mid = left + right >> 1,也就是计算中间值。这条语句我用C和Java写了很多次,自信不用加括号,因为‘+’运算的优先级高于’>>‘运算。但是在Golang中不是这样,而是’>>'运算的优先级更好。解决方法:加上括号mid = (left + right) >> 1。其他,STL中在去中间值时是这样写的mid = (right - left) / 2 + left,是为了避免加法溢出(left + rigth)。C语言的运算符优先级Golang的运算符优先级
C和Golang在运算符优先级方面的比较
时间:2023-06-01
相关推荐