C#中long和int的区别?

时间:2009-12-16 23:03:00

标签: c# casting types

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

另一个问题:int可以持有long(通过演员表)而不会丢失所有平台上的数据吗?

6 个答案:

答案 0 :(得分:69)

int(运行时中的System.Int32)在任何平台上始终是带符号的32位整数,long(又名System.Int64)始终是带符号的64任何平台上的位整数。因此,您无法使用longInt32.MaxValue以上的值Int32.MinValue投射,而不会丢失数据。

答案 1 :(得分:19)

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

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

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

答案 2 :(得分:8)

int在.NET中是32位。 long是64位。这是有保证的。所以,不,int在不丢失数据的情况下不能持久。

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

答案 3 :(得分:4)

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

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

C / C ++该问题与平台有关。

答案 4 :(得分:4)

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

C ++仅提供关于int / long大小的模糊保证,相比之下(您可以通过C ++标准深入了解精确,详细,详细信息)。

答案 5 :(得分:0)

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