Разница между unsigned long и UINT64



В чем разница между unsigned long и UINT64?
Я думаю, что это одно и то же, но я не уверен.
Определение UINT64 таково:



typedef unsigned __int64    UINT64


(с помощью StdAfx.h)

520   5  

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

    Ничего не найдено.