繁体   English   中英

C#中long和int的区别?

[英]Difference between long and int in C#?

C#中longint之间的实际区别是什么? 据我所知,在C / C ++中,在某些64位平台上长度为64位(当然取决于操作系统),但在C#中,它们都在.NET运行时运行,所以有实际的区别吗?

另一个问题: int可以持有很long (通过强制转换)而不会丢失所有平台上的数据吗?

int (在运行时中称为System.Int32 )在任何平台上始终是带符号的32位整数, long (aka System.Int64 )在任何平台上始终是带符号的64位整数。 因此,您不能使用高于Int32.MaxValue或低于Int32.MinValue的值从long Int32.MinValue而不会丢失数据。

int in C#=> System.Int32 => from -2,147,483,648 to 2,147,483,647。

long in C#=> System.Int64 => from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

如果您的长数据超出int的范围,并且您使用Convert.ToInt32然后它将抛出OverflowException,如果您使用显式强制转换,则结果将是意外的。

int在.NET中是32位。 long是64位。 这是有保证的。 所以,不,一个int不能保持很长时间而不会丢失数据。

有一种类型,其大小根据您运行的平台而变化,即IntPtr (和UIntPtr)。 这可以是32位或64位。

当然是有区别的 - 在C#中,long是64位有符号整数,int是32位有符号整数,这就是它始终如一的方式。

所以在C#中,long可以持有一个int,但是int不能持久。

C / C ++这个问题是依赖于平台的。

在C#中, intSystem.Int32longSystem.Int64 ; 前者是32位,后者是64位。

相比之下,C ++只提供关于int / long大小的模糊保证(你可以通过C ++标准来了解确切的,详细的,详细的)。

我认为int是32位整数,而long是64位整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM