2012-12-04 70 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数据类型

相关问题