【发布时间】:2015-09-30 06:47:46
【问题描述】:
今天我遇到了这种奇怪的行为,有人能解释一下为什么会这样吗?
var x = -1U; // When using -1UL it complains though.
Console.WriteLine(x.GetType().Name);
Console.WriteLine(x);
输出:
Int64
-1
MSDN 说:
如果文字以 U 或 u 为后缀,则它具有以下类型中的第一个可以表示其值:uint、ulong。
https://msdn.microsoft.com/en-us/library/aa664674%28v=vs.71%29.aspx
【问题讨论】:
-
您无法将
negative value转换为unsigned int/long。 -
我猜你在问为什么它没有抛出编译时错误?
-
var x = unchecked((ulong)-1);这会起作用