4

如何将 ulong 转换为 long 并获得与 c++ 中相同的结果。

C++

unsigned long ul = 3633091313;
long l = (long)ul;
l is -661875983

C#

ulong ul = 3633091313;
long l = (long)ul;
l is 3633091313
4

1 回答 1

8

C++long通常是 32 位数据类型。看起来在您的系统中它没有足够的位来表示3633091313,因此结果是否定的。此行为在 C++ 中未定义(相关问答)。

在对应于转换为的 C# 中int

UInt64 ul = 3633091313UL;
Int32 l = (int)ul;
Console.WriteLine(l); // prints -661875983

演示。

于 2018-02-07T20:23:02.867 回答