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