Преобразование типов даты в C # аналогично переполнению стека

Как мне конвертировать 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

Решение

C ++ ‘s long часто это 32-битный тип данных. Похоже, в вашей системе не хватает бит для представления 3633091313так что результат отрицательный. Это поведение не определено в C ++ (соответствующий Q&).

В C # это соответствует преобразованию в int:

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

Demo.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]