将-1转换为uint将不起作用“((uint)( - 1))”解决方案?将-1转换为uint C#
num10 = ((uint)(-1)) >> (0x20 - num9);
错误: 恒值“-1”不能被转换为“UINT”(利用未选中语法重写)
将-1转换为uint将不起作用“((uint)( - 1))”解决方案?将-1转换为uint C#
num10 = ((uint)(-1)) >> (0x20 - num9);
错误: 恒值“-1”不能被转换为“UINT”(利用未选中语法重写)
的无符号整数只能表示正值。它不能代表-1。
如果要表示负值,则需要使用signed类型,如int
。
编译器告诉你,你需要做什么:
unchecked
{
num10 = ((uint)(-1)) >> (0x20 - num9);
}
但是,它可能不会给你你想要的结果。
使用
uint minus1 = unchecked((uint)-1);
uint num10 = (minus1) >> (0x20 - num9);
甚至更好
uint num10 = (uint.MaxValue) >> (0x20u - num9);
中查找unchecked上下文。
你确实可以有些东西类似于负数,无符号数。它们具有如下特征:x + (-x) == 0
要建立在C#中没有选中区域“负” UINT,您可以改用等效(~x) + 1
这是一样的-x
-1是无符号整数的范围之外。 – 2013-03-17 06:03:49
错误消息是否不告诉您解决方案? – 2013-03-17 06:06:51