C#中long和int的区别?

Ear*_*rlz 40 c# types casting

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

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

the*_*oop 69

an int(System.Int32在运行时内)在任何平台上始终是带符号的32位整数,a long(aka System.Int64)在任何平台上始终是带符号的64位整数.因此,您无法在不丢失数据的情况下long使用值高于Int32.MaxValue或低于某个值Int32.MinValue进行转换.

  • 那些是C++类型,而不是C# (5认同)
  • 好.但是为什么这个页面https://msdn.microsoft.com/en-us/library/296az74e.aspx显示MAX INT和MAX LONG中的相同数字?微软页面上的错误? (3认同)
  • 当您在Google中搜索“ C#长最大值”时的第一页就是此页面-https://msdn.microsoft.com/zh-cn/library/296az74e.aspx-不适用于C#。这就是为什么OP问这个问题。 (2认同)

Ant*_*wan 21

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,如果您使用显式强制转换,则结果将是意外的.


Gon*_*alo 8

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

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


Wal*_*t W 5

当然是有区别的 - 在 C# 中,long 是一个 64 位有符号整数,一个 int 是一个 32 位有符号整数,而且它永远都是这样。

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

C/C++ 这个问题是平台相关的。