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

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

typedef unsigned __int64    UINT64

(используя StdAfx.h)

Ответ 1

UINT64 определен и заявляет о ваших намерениях. Вам нужен тип, который является целым числом без знака, которое имеет ширину всего 64 бита. То, что это может быть равно unsigned long на некоторых платформах, является совпадением.

Ответ 2

Размер типа unsigned long может меняться в зависимости от архитектуры системы, в которой вы находитесь, в то время как предположение состоит в том, что UINT64 определенно имеет ширину 64 бит. Посмотрите http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Size

Ответ 4

Стандарт С++ не определяет размеры каждого из типов (кроме char), поэтому размер unsigned long определяется реализацией. В большинстве случаев я знаю, однако, unsigned long - это неподписанный 32-битный тип, а UINT64 (который является типом реализации, даже не упомянутым в стандарте) - это 64-разрядное целое без знака в VS.

Ответ 5

Длинный, как правило, 32 бита (но это может быть очень для архитектуры), а uint64 всегда 64 бит. Собственный тип данных, который иногда составляет 64 бита, является long long int.