web-dev-qa-db-ja.com

C#のlongとintの違いは?

C#のlongintの実際の違いは何ですか? C/C++では64ビットプラットフォームでは64ビットが長くなることを理解しています(もちろんOSに依存します)が、C#ではすべて.NETランタイムで実行されているので、実際の違いはありますか?

別の質問:intは、すべてのプラットフォームでデータを失うことなく(キャストによって)longを保持できますか?

40
Earlz

int(ランタイム内のSystem.Int32)は常にすべてのプラットフォームで符号付き32ビット整数であり、long(別名System.Int64)は常に符号付き64ビットです。任意のプラットフォームの整数。そのため、データを失うことなく、Int32.MaxValueより上またはInt32.MinValueより下の値を持つlongからキャストすることはできません。

70
thecoop

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

c#のlong => System.Int64 => -9,223,372,036,854,775,808から9,223,372,036,854,775,807まで

長いデータがintの範囲を超え、Convert.ToInt32を使用すると、OverflowExceptionがスローされます。明示的なキャストを使用すると、予期しない結果になります。

20
Anton Setiawan

intは.NETでは32ビットです。 longは64ビットです。それは保証されています。そのため、intはデータを失うことなく長く保持できません。

実行しているプラ​​ットフォームに応じてサイズが変化するタイプがあります。これはIntPtr(およびUIntPtr)です。これは32ビットまたは64ビットです。

8
Gonzalo

確かに違いがあります-C#では、longは64ビットの符号付き整数、intは32ビットの符号付き整数であり、常にそうです。

C#では、longはintを保持できますが、intはlongを保持できません。

C/C++の質問はプラットフォームに依存しています。

4
Walt W

C#では、intSystem.Int32およびlongSystem.Int64;前者は32ビットで、後の64ビットです。

C++は、比較してint/longのサイズについて漠然とした保証のみを提供します(正確で詳細な情報については、C++標準を掘り下げることができます)。

4
Josh

Intは32ビット整数、longは64ビット整数だと思います。

0
Doug R