Разница между unsigned long и UINT64 - PullRequest
16 голосов
/ 23 июня 2010

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

typedef unsigned __int64    UINT64

(с использованием StdAfx.h)

Ответы [ 5 ]

12 голосов
/ 23 июня 2010

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

4 голосов
/ 23 июня 2010

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

3 голосов
/ 23 июня 2010

См. http://msdn.microsoft.com/en-us/library/s3f49ktz(VS.90).aspx

Вы хотите увидеть разницу между unsigned long и unsigned __int64.

3 голосов
/ 23 июня 2010

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

1 голос
/ 23 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...