gpt4 book ai didi

c# - 这个 "cast negative number to unsigned integer"成语是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:17 29 4
gpt4 key购买 nike

我正在研究一些代码,Visual Studio 编译器提示编译错误:将负数转换为无符号长整数。

然而,原来的源代码中是这样的,就像这样:

var foo = new FancyMapArea((long)((ulong)-2147483648), (long)((ulong)-2147483648), 256, 256)

这样做的目的是什么?如果这很愚蠢,我应该如何编译才能在获得预期结果的同时进行编译?

更新/重要提示:

此源代码是由 ILSpy 反编译器生成的,因此可能并非由人类开发人员实际输入。

最佳答案

ulong 不应该存储带符号的整数值。因为它不使用最后一位来存储整数的符号值。你必须使用 unchecked 关键字来使用这样的东西,这将使你对值有一个环绕行为

            string a = aaa.ToString();
ulong b = ulong.MaxValue; //18446744073709551615

unchecked
{
b = (ulong)(-20); //18446744073709551596
}

综上所述,如果您最终要转换为 long,则完全删除到 ulong 的中间转换。

var foo = new FancyMapArea((long)(-2147483648), (long)(-2147483648), 256, 256)

关于c# - 这个 "cast negative number to unsigned integer"成语是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193099/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com