@[hwwqy](/user/363669) 你多打个括号估计就可以了
```
(l+r>>1)
```
by bamboo1030 @ 2023-08-24 20:08:15
`((l)+(r)>>1)`
by _•́へ•́╬_ @ 2023-08-24 20:08:42
@[bamboo123](/user/369181) 确实,可为什么会这样呢
by hwwqy @ 2023-08-24 20:12:53
@[hwwqy](/user/363669) 就是宏定义他是直接替换不是定义了个函数,要多加括号保证运算顺序,位移运算优先级不高于加减
by bamboo1030 @ 2023-08-24 20:14:17
```cpp
((l+r)>>1)
```
by vanishingloser @ 2023-08-24 20:19:18
打括号就可以了
```cpp
(l+r>>1)
```
<<
是位运算,优先级比较低,而宏只负责替换,不计算,所以有可能其他的先进行了运算
比如:
```cpp
r-mid
```
会变成
```cpp
r-l+r>>1
```
此时先算r-l+r
by wzhm54nr @ 2023-09-04 14:47:46