将-1转换为int c#
本文关键字:int 转换 | 更新日期: 2023-09-27 18:04:11
将-1转换为int将不工作"((uint)(-1))"解决方案?
num10 = ((uint)(-1)) >> (0x20 - num9);
错误:常量值'-1'不能转换为'uint'(使用'unchecked'语法重写)
使用
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
相同