什么是C#检查的C ++等价物

时间:2013-01-24 11:44:44

标签: c# c++-cli overflow

我希望避免托管C ++(CLI)中的溢出。在C#中有一个未经检查的关键字,并且在C ++溢出中不会以异常结束。

作为参考,未经检查会记录here。基本上如果你这样做:

unchecked
{
      int1 = 2147483647 + 10; //this overflows in CLI but is ok in C# and C++
}

在C#中它不会溢出,但通过取最低有效位转换为int。例如,当您计算哈希码时,这是合适的。

注意:我意识到没有等效的C ++关键字,但是一些位移应该可以解决问题;

2 个答案:

答案 0 :(得分:3)

您可以在方法周围使用#pragma unmanaged来获取本机C ++中正常的未经检查的行为。

答案 1 :(得分:2)

使用无符号数据类型进行位操作和校验和。无符号行为的环绕行为在C ++中已经明确定义。