С# эквивалент 64-битного unsigned long long в С++

Я строю DLL, которая будет использоваться C++ с использованием COM. Пожалуйста, дайте мне знать, что будет С# эквивалентом C++ 64-битного unsigned long long.

Это будет тип ulong в С#? Пожалуйста, подтвердите.

Спасибо, Gagan

Ответ 1

Может быть, это поможет вам:

  • ulong (64-разрядное целое число без знака)
  • double(64-разрядное число с плавающей запятой).

Ответ 2

Для всего, что выходит за рамки ulong, вы также можете использовать структуру С# BigInteger.

Ответ 3

В C++ каждый целочисленный тип удваивает свой размер при работе на 64-разрядной машине, а не на 32-разрядной.
Следовательно, указание того, что С# int или long может быть эквивалентно C++ int или long, неверно.

Скорее, в С# есть тип с именем IntPtr, который был создан исключительно для P/Invoke. Действительно, этот размер изменяет свой размер с 4 байтов на 32-битной машине до 8 байтов на 64-битной машине, и поэтому это правильный эквивалент C++ unsigned long или Windows ULONG.

Ответ 4

Начиная с С++ 11, вы можете использовать их:

  • int8_t
  • int16_t
  • int32_t
  • int64_t
  • uint8_t
  • uint16_t
  • uint32_t
  • uint64_t

Их размер гарантированно останется неизменным независимо от всего.

http://en.cppreference.com/w/cpp/types/integer,