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

Dif*_*ine 99 c# unsigned signed types integer

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

Isa*_*avo 194

前缀为"u"的原始数据类型是具有相同位大小的无符号版本.实际上,这意味着它们不能存储负数,但另一方面,它们可以存储两倍于其签名对应数的正数.已签名的同行没有"u"前缀.

int(32位)的限制是:

int: –2147483648 to 2147483647 
uint: 0 to 4294967295 
Run Code Online (Sandbox Code Playgroud)

并且长(64位):

long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
Run Code Online (Sandbox Code Playgroud)

  • 手工锻炼非常有趣.32位有符号变量使用1位作为符号(正或负),因此可以存储-2 ^ 31和+ 2 ^ 31 - 1之间的值 (9认同)
  • @JacoPretorius 那错了。8 位 int 的范围从 –128 到 127。第 9 位表示 256。因此,使用 8 位,您可以表示最多 255(第 9 个值 - 1)的所有值。从 -128 到 127 的范围的长度正好是 255。所以没有位持有符号。直到 127 的所有值都是正值。上面的值显示为负数。255 将是 -1。254 将是 -2,因此可以下降到 128。 (2认同)

Mar*_*ers 36

uint并且ulong是无符号版本intlong.这意味着他们不能消极.相反,它们具有更大的最大值.

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

要在源代码中编写文字unsigned int,您可以使用后缀uU例如123U.

如果您希望符合CLS标准,则不应在公共接口中使用uint和ulong .

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

顺便说一下,还有shortushort,bytesbyte.


Che*_*hen 10

u意思是unsigned,ulong没有符号的是大数字.您可以存储更大的价值ulonglong,但不允许有负数.

long值被存储在64位,其第一位数,以显示它是否是一个正/负号.虽然ulong也是64位,所有64位存储数字.所以ulong的最大值是2(64)-1,而long是2(63)-1.


sro*_*uez 8

区别在于uintulong是无符号数据类型,意味着范围不同:它们不接受负值:

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
Run Code Online (Sandbox Code Playgroud)