我希望避免在托管C++(CLI)中发生溢出。在C#中有unchecked关键字,在C++中溢出不会导致异常。
参考此处的文档,如果执行以下操作:
unchecked
{
int1 = 2147483647 + 10; //this overflows in CLI but is ok in C# and C++
}
在C#中,它不会溢出而是通过取最低有效位将其转换为int。例如,计算哈希码时,这是合适的。
注意:我意识到在C++中没有等效的关键字,但是一些位移操作可以解决问题。
#pragma unmanaged
来获取本机 C++ 中正常的未检查行为。 - leppie