我希望避免托管 C++ (CLI) 中的溢出。在 C# 中有一个未经检查的关键字,在 C++ 中溢出不会以异常结束。
作为参考,此处记录了 unchecked 。基本上,如果你这样做:
unchecked
{
int1 = 2147483647 + 10; //this overflows in CLI but is ok in C# and C++
}
在 C# 中,它不会溢出,而是通过获取最低有效位转换为 int。例如,当您计算哈希码时,这是合适的。
注意:我意识到没有等效的 C++ 关键字,但是一些位移应该可以解决问题;