我希望 alwaysPositive 被分配一个正数,其中 lareValue1 和 largeValue2 的所有可能值(这些至少为 1)。
以下语句导致缓冲区溢出:
int alwaysPositive = (largeValue1 + largeValue2) / 2;
我知道我可以通过减去和添加来防止它:
int alwaysPositive = largeValue1 + ((largeValue2 - largeValue1) / 2);
但在其他编程语言中,我可以使用无符号位移位来解决问题:
int alwaysPositive3 = (largeValue1 + largeValue2) >>> 1;
我怎样才能在 C# 中做到这一点?
下面的答案都解决了这个问题。可能有很多方法可以做到这一点,但它们(包括我的解决方案)都有一个共同点:它们看起来都被混淆了。