“int”和“uint”/“long”和“ulong”有什么区别?

我知道intlong (32位和64位数字),但是什么是uintulong

以“u”为前缀的原始数据types是具有相同位大小的无符号版本。 实际上,这意味着他们不能存储负数,但另一方面他们可以存储两倍于正式签名的正数。 签字的对方没有“u”前缀。

int(32位)的限制是:

 int: –2147483648 to 2147483647 uint: 0 to 4294967295 

而长(64位):

 long: -9223372036854775808 to 9223372036854775807 ulong: 0 to 18446744073709551615 

uintulongintlong的无符号版本。 这意味着他们不能是负面的。 相反,他们有一个更大的最大值。

types最小最大CLS兼容
 int -2,147,483,648 2,147,483,647是的
 uint 0 4,294,967,295 No
长-9,223,372,036,854,775,808 9,223,372,036,854,775,807是的
 ulong 0 18,446,744,073,709,551,615没有

要在您的源代码中写入一个文字无符号整型,您可以使用后缀uU (例如123U

如果您希望符合CLS标准,则不应在您的公共界面中使用uint和ulong。

阅读文档以获取更多信息:

  • INT
  • UINT
  • ULONG

顺便说一下,也有短暂和ushort和字节和sbyte 。

u意思是unsigned ,所以ulong是一个没有符号的大数。 你可以在ulong存储一个比long更大的值,但是不允许有负数。

一个long值被存储在64位,其第一个数字显示是否是正数/负数。 而ulong也是64位,全部是64位来存储这个数字。 所以ulong的最大值是2(64)-1,long是2(63)-1。

不同之处在于uintulong是无符号的数据types,这意味着范围是不同的:它们不接受负值:

 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