Teamol
Teamol

Reputation: 819

C# date types convertion same as c++

How do I convert ulong to long with same result as I get in c++.

C++

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

C#

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

Upvotes: 4

Views: 78

Answers (1)

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 726539

C++'s long is often a 32-bit data type. It looks like in your system it does not have enough bits to represent 3633091313, so the result is negative. This behavior is undefined in C++ (relevant Q&A).

In C# that corresponds to converting to int:

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

Demo.

Upvotes: 8

Related Questions