我正在准备一个非常复杂的c#考试,这个问题在弹出时出现。 我有以下代码:C#int32文字只能存储在长数据类型
uint zzz = -12u;
-12u
被识别为System.Uint32
字面但它只能被存储在long
类型的变量。这是为什么 ?
我正在准备一个非常复杂的c#考试,这个问题在弹出时出现。 我有以下代码:C#int32文字只能存储在长数据类型
uint zzz = -12u;
-12u
被识别为System.Uint32
字面但它只能被存储在long
类型的变量。这是为什么 ?
它正在做的是采取无符号整数12,并试图将其转换为负值(-
),它需要转换为可处理负数的类型,因为unsigned int不能。
因为它是一个无符号整数,所以它有可能的值在int范围之外,所以需要转换为long。
是的;如果你看看[integer literal spec](http://msdn.microsoft.com/en-us/library/aa664674.aspx),你可以看到减号不是文字的一部分,所以它创建了一个'uint',然后在否定它时不得不将它扩大到'long'。 – Rawling
谢谢你,那是我想知道的。 –
因为u
是unsigned int的
用于处理-VE签署转化成Long数据类型
-12u为它存储在unsigned
类型符号整数数据类型&它使用long
数据类型
你知道'u'代表什么吗? –
我猜是因为unsigned int应该是无符号的? –
提示:“-12u被识别为System.Uint32”不正确。说“12u被识别为System.Uint32”是正确的。 – vcsjones