2013-01-24 87 views
3

我正在寻找避免托管C++(CLI)溢出。在C#中有一个未经检查的关键字,在C++中,溢出不会以例外情况出现。什么是C#等效的C#检查

仅供参考,未经检查记录在here。基本上,如果你这样做:

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

在C#中也不会溢出,但转换采取最低显著位为int。例如,当您计算散列码时,这是适当的。

注意:我意识到没有等效的C++关键字,但有些位移应该可以做到;

+0

'unchecked'是默认行为(除非被编译器覆盖)。 – leppie

+0

在托管的C++(CLI)中,您将遇到溢出异常。我在编辑这个问题。 –

+1

@downvoters - 为什么? –

回答

3

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

2

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

相关问题