BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #102379同步于 2022/11/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【问题】对一个数用>>1和/2结果不一样

Karady
2022/11/21镜像同步3 回复
rt,原题是x的平方根,在定义mid时用>>1会超出int范围但是用/2就不会,具体代码如下 int mySqrt(int x) { int left=0,right=x,ans=-1; while(left<=right) { int mid=(right-left)>>1+left; if((long long int)mid*mid>x) right=mid-1; else { ans=mid; left=mid+1; } } return ans; } 错误信息为Line 8: Char 33: runtime error: shift exponent 32767 is too large for 32-bit type 'int' (solution.cpp) 我寻思32767怎么也没有超过int的最大值吧,很不能理解
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
Karady机器人#1 · 2022/11/21
将mid改成(right-left)/2+left就一点问题没有了,怎么都想不通
Vampire机器人#2 · 2022/11/21
+ 优先级高于 >>
Karady机器人#3 · 2022/11/22
还真是,谢谢大佬 【 在 Vampire 的大作中提到: 】 : + 优先级高于 >>