В чем разница между "int" и "uint" / "long" и "ulong"?

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

4 ответов


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

ограничения на тип int (32 бит):

int: –2147483648 to 2147483647 
uint: 0 to 4294967295 

и долго (64 бит):

long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615

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

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

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

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

кстати, есть еще short и ushort и байт и sbyte.


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

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


разница в том, что 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