Ответ 1
UINT64 определен и заявляет о ваших намерениях. Вам нужен тип, который является целым числом без знака, которое имеет ширину всего 64 бита. То, что это может быть равно unsigned long на некоторых платформах, является совпадением.
В чем разница между unsigned long
и UINT64
?
Я думаю, что они такие же, но я не уверен.
Определение UINT64
:
typedef unsigned __int64 UINT64
(используя StdAfx.h)
UINT64 определен и заявляет о ваших намерениях. Вам нужен тип, который является целым числом без знака, которое имеет ширину всего 64 бита. То, что это может быть равно unsigned long на некоторых платформах, является совпадением.
Размер типа unsigned long
может меняться в зависимости от архитектуры системы, в которой вы находитесь, в то время как предположение состоит в том, что UINT64
определенно имеет ширину 64 бит. Посмотрите http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Size
См. http://msdn.microsoft.com/en-us/library/s3f49ktz(VS.90).aspx
Вы хотите увидеть разницу между unsigned long
и unsigned __int64
.
Стандарт С++ не определяет размеры каждого из типов (кроме char
), поэтому размер unsigned long
определяется реализацией. В большинстве случаев я знаю, однако, unsigned long
- это неподписанный 32-битный тип, а UINT64
(который является типом реализации, даже не упомянутым в стандарте) - это 64-разрядное целое без знака в VS.
Длинный, как правило, 32 бита (но это может быть очень для архитектуры), а uint64 всегда 64 бит. Собственный тип данных, который иногда составляет 64 бита, является long long int
.