В чем разница между "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-совместимыми.
читать документацию для более информация:
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