2013-01-24 88 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++中是很好定義的。

相關問題