C#中long和int之间的差异?

C#中long和int之间的差异?,c#,casting,types,C#,Casting,Types,C#中的long和int之间的实际区别是什么?我知道在C/C++中,在某些64位平台上,long是64位的(当然取决于操作系统),但在C#中,它都是在.NET运行时运行的,所以有实际的区别吗 另一个问题:int能否在所有平台上保存long(通过cast)而不丢失数据?一个int(在运行时内又称System.Int32)在任何平台上都是有符号的32位整数,long(又称System.Int64)在任何平台上都是有符号的64位整数。因此,如果值高于Int32.MaxValue或低于Int32.Min

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


另一个问题:
int
能否在所有平台上保存
long
(通过cast)而不丢失数据?

一个
int
(在运行时内又称
System.Int32
)在任何平台上都是有符号的32位整数,
long
(又称
System.Int64
)在任何平台上都是有符号的64位整数。因此,如果值高于
Int32.MaxValue
或低于
Int32.MinValue
,则无法从
long
进行强制转换,而不会丢失数据。

int
是.NET中的32位<代码>长为64位。这是有保证的。所以,不,
int
不能长时间保存而不丢失数据


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

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

所以在C#中,long可以容纳int,但int不能容纳long

C/C++这个问题取决于平台。

在C#中,
int
是一个
系统。Int32
long
是一个
系统。Int64
;前者是32位,后者是64位


C++只提供了关于INT/LING大小的模糊保证,比较一下(可以通过C++标准来挖掘精确、高深、细节)。我认为int是32位整数,而长是64位整数。< /P> int > C=>系统。INT32=>从2147483648到2147483647。 C#=>System.Int64=>中的长字符从-9223372036854775808到9223372036854775807


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

除了答案,请注意,long和int有静态的MaxValue和MinValue常量。我知道这一点,但我不确定这些常量是否会根据32位和64位平台而改变。。在google上搜索只得到了很多C/C++结果。这个平台是在.NET中抽象出来的,所以你总是可以得到一个一致的运行时(至少对于托管代码而言),不要把.NET CLR看作是虚拟机。把它看作是一个即时编译器,这就更有意义了。Net代码在应用程序启动时编译为完全本机代码,然后再运行任何程序。当然,long和int的区别是long。总数也是如此。:-)好啊但是为什么这个页面显示的是同一个MAX INT和MAX LONG的数字呢??微软页面上的错误?那些是C++类型,而不是C ^第一个页面,当你的谷歌代码“C>长最大值< /代码>是这个页面时,这不是C语言。这似乎是OP提出这个问题的原因。