2012-12-04 67 views
5

我正在準備一個非常複雜的c#考試,這個問題在彈出時出現。 我有以下代碼:C#int32文字只能存儲在長數據類型

uint zzz = -12u; 

-12u被識別爲System.Uint32字面但它只能被存儲在long類型的變量。這是爲什麼 ?

+5

你知道'u'代表什麼嗎? –

+3

我猜是因爲unsigned int應該是無符號的? –

+2

提示:「-12u被識別爲System.Uint32」不正確。說「12u被識別爲System.Uint32」是正確的。 – vcsjones

回答

12

它正在做的是採取無符號整數12,並試圖將其轉換爲負值(-),它需要轉換爲可處理負數的類型,因爲unsigned int不能。

因爲它是一個無符號整數,所以它有可能的值在int範圍之外,所以需要轉換爲long。

+1

是的;如果你看看[integer literal spec](http://msdn.microsoft.com/en-us/library/aa664674.aspx),你可以看到減號不是文字的一部分,所以它創建了一個'uint',然後在否定它時不得不將它擴大到'long'。 – Rawling

+0

謝謝你,那是我想知道的。 –

0

因爲u是unsigned int的
用於處理-VE簽署轉化成Long數據類型
-12u爲它存儲在unsigned類型符號整數數據類型&它使用long數據類型

相關問題