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

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

255063 次浏览

uintulongintlong的未签名版本。也就是说不可能是阴性的。相反,它们具有更大的最大值。

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

要在源代码中编写文字无符号整型,可以使用后缀 uU,例如 123U

如果希望成为 CLS-符合规定,则不应在公共接口中使用 uint 和 ulong。

阅读文档了解更多信息:

顺便说一下,也有 太短了太短了字节斯拜特

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

Int (32位)的限制是:

int: –2147483648 to 2147483647
uint: 0 to 4294967295

长(64位) :

long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615

区别在于 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

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

long值以64位存储,其第一个数字显示它是正数还是负数。而 ulong也是64位的,全部64位用于存储数字。所以乌龙的最大值是2(64)-1,而长度是2(63)-1。

我已经有一段时间没用 C + + 了,但是这些答案有点不对劲。

就大小而言,‘ int’什么也不是。它是一个标准整数的概念值; 为了像迭代这样的目的,假定它是快速的。没有预设尺寸。

因此,关于 int 和 uint 之间的差异,答案是正确的,但是当它们谈到“它们有多大”或者它们的范围是什么时,答案是不正确的。该大小是未定义的,或者更准确地说,它将随着编译器和平台的变化而变化。

在公共场合讨论你的私处大小是不礼貌的。

当您编译一个程序时,int 是的有一个大小,因为您已经将抽象的 C/C + + 转换为具体的机器代码。

所以,今天,实际上对于大多数普通的编译器来说,他们是正确的。

具体来说: 如果你写一个32位的程序,int 是一个东西,64位,它可以是不同的,16位是不同的。我已经通过所有三个,并简要看了6502 颤抖

谷歌的简短搜索显示: Https://www.tutorialspoint.com/cprogramming/c_data_types.htm 这也是个好消息: Https://docs.oracle.com/cd/e19620-01/805-3024/lp64-1/index.html

如果您真的不在乎您的位有多大,可以使用 int; 它可以改变。

如果您想知道某个东西有多大,可以使用 size _ t 和 ssize _ t。

如果正在读写二进制数据,请不要使用 int。使用(通常依赖于平台/源)特定的关键字。WinSDK 提供了大量很好的、可维护的示例。其它平台也是如此。

我花了很多时间研究人们的代码,他们认为这些代码都是学术性的/迂腐的。它们吃掉了编写不可维护代码的人。当然,使用“ int”类型并使用它很容易,而不需要额外的输入。要弄清楚它们的真正含义还有很多工作要做,而且有点麻木。

当您混合 int 和假设大小时,这是脆弱的代码。

当您只想要一个快速整数并且不关心范围(除了有符号/无符号)时,可以使用 int 和 uint。

基于这里的其他答案和一个小小的回顾,你可以这样理解它: unsigned 是指负或正的显式赋值的赋值(想想 -1中的“-”) ,以及不能有所述数字的负的版本。

因为这个负面的能力被移除作为一个期权,他们把这个能力分配给正面的能力,因此正面估值的最大价值翻了一番。因此,比特范围不是沿着正值和负值分割,而是分配给估值的正端的 usshort、 uint、 along 等。