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