簡體   English   中英

C#UInt vs Cpp DWORD與負值沖突

[英]C# UInt vs Cpp DWORD conflict with negative values

C ++: DWORD dwState = (DWORD)-1;

這里沒有問題。

C#: uint state = -1 ;

在這里,與DWORD等效的uint或UInt32不能為負值,並且拋出以下異常。

對於UInt32,值太大或太小

我有一個代碼可以從cpp和c#程序中讀取此值(存儲在DB中)。 Cpp將無效狀態標記為-1。 因此,我無法使用uint類型從C#前端讀取它。 我無法在c ++程序中更改此類型。 除-1外,cpp可以為變量寫入0-65536之間的任何值。

我該如何從C#前端處理它?

我該如何從C#前端處理它?

您可以將unchecked運算符用於常量分配:

uint state = unchecked((uint) -1);

在C#規范第7.6.12節中:

checkedunchecked運算符用於控制整數型算術運算符和轉換的溢出檢查上下文

...

對於常量表達式(可以在編譯時完全評估的表達式),始終會checked默認的溢出檢查上下文。 除非將常量表達式顯式放置在unchecked上下文中,否則在表達式的編譯時求值過程中發生的溢出始終會導致編譯時錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM