[英]Difference between long and int in C#?
C#中long
和int
之间的实际区别是什么? 据我所知,在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#中, int
是System.Int32
, long
是System.Int64
; 前者是32位,后者是64位。
相比之下,C ++只提供关于int / long大小的模糊保证(你可以通过C ++标准来了解确切的,详细的,详细的)。
我认为int是32位整数,而long是64位整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.