将-1转换为uint C#

时间:2013-03-17 06:00:06

标签: c# override unchecked uint

将-1转换为uint将不起作用“((uint)( - 1))”解决方案?

num10 = ((uint)(-1)) >> (0x20 - num9);

错误: 常量值'-1'无法转换为'uint'(使用'unchecked'语法覆盖)

5 个答案:

答案 0 :(得分:7)

使用

uint minus1 = unchecked((uint)-1);
uint num10 = (minus1) >> (0x20 - num9);

甚至更好

uint num10 = (uint.MaxValue) >> (0x20u - num9);

答案 1 :(得分:2)

编译器告诉你需要做什么:

unchecked
{
     num10 = ((uint)(-1)) >> (0x20 - num9);
}

但是,它可能无法提供您想要的结果。

答案 2 :(得分:1)

无符号整数只能表示正值。它不能代表-1。

如果您想表示负值,则需要使用int类型,例如{{1}}。

答案 3 :(得分:1)

查找unchecked上下文。

答案 4 :(得分:0)

你确实可以在某种程度上拥有类似于负数,无符号数的东西。它们具有x + (-x) == 0

的功能

要在没有未经检查的区域的c#中创建“否定”uint,您可以使用与(~x) + 1相同的等效-x