В чем разница между «int» и «uint» / «long» и «ulong»? - PullRequest
89 голосов
/ 16 сентября 2010

Я знаю о int и long (32-битные и 64-битные числа), но что такое uint и ulong?

Ответы [ 4 ]

174 голосов
/ 16 сентября 2010

Примитивные типы данных с префиксом "u" являются беззнаковыми версиями с одинаковыми размерами битов. Фактически это означает, что они не могут хранить отрицательные числа, но, с другой стороны, они могут хранить положительные числа в два раза больше, чем их подписанные аналоги. Подписанные аналоги не имеют префикса "u".

Предельные значения для int (32 бита):

int: –2147483648 to 2147483647 
uint: 0 to 4294967295 

И для длинных (64 бит):

long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
35 голосов
/ 16 сентября 2010

uint и ulong являются беззнаковыми версиями int и long.Это означает, что они не могут быть отрицательными.Вместо этого они имеют большее максимальное значение.

Type    Min                           Max                           CLS-compliant
int     -2,147,483,648                2,147,483,647                 Yes
uint    0                             4,294,967,295                 No
long    –9,223,372,036,854,775,808    9,223,372,036,854,775,807     Yes
ulong   0                             18,446,744,073,709,551,615    No

Чтобы написать буквенное целое число без знака в вашем исходном коде, вы можете использовать суффикс u или U, например 123U.

Вы не должны использовать uint и ulong в общедоступном интерфейсе, если хотите быть CLS-совместимым .

Прочтите документацию для получения дополнительной информации:

Кстати, есть также short и ushort и byte и sbyte .

10 голосов
/ 16 сентября 2010

u означает unsigned, поэтому ulong - это большое число без знака. Вы можете сохранить большее значение в ulong, чем long, но отрицательные числа не допускаются.

Значение long сохраняется в 64-битном формате, причем первая цифра показывает, является ли она положительным / отрицательным числом в то время как ulong также 64-битный, со всеми 64-битными для хранения номера. таким образом, максимальное значение ulong составляет 2 (64) -1, а long - 2 (63) -1.

8 голосов
/ 16 сентября 2010

Разница в том, что uint и ulong являются типами данных без знака, что означает, что диапазон отличается: они не принимают отрицательные значения:

int range: -2,147,483,648 to 2,147,483,647
uint range: 0 to 4,294,967,295

long range: –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
ulong range: 0 to 18,446,744,073,709,551,615
...