将-1转换为int c#

本文关键字:int 转换 | 更新日期: 2023-09-27 18:04:11

将-1转换为int将不工作"((uint)(-1))"解决方案?

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

错误:常量值'-1'不能转换为'uint'(使用'unchecked'语法重写)

将-1转换为int c#

使用

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

或者更好的

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

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

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

但是,它可能不会给你想要的结果

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

如果您想要表示负值,则需要使用有符号类型,如int

查找未选中的上下文

确实可以有一些类似于负数的无符号数。它们的特征是x + (-x) == 0

要在c#中创建一个没有未检查区域的"负"单元,你可以使用等价的(~x) + 1,它与-x相同