C#のlong
とint
の実際の違いは何ですか? C/C++では64ビットプラットフォームでは64ビットが長くなることを理解しています(もちろんOSに依存します)が、C#ではすべて.NETランタイムで実行されているので、実際の違いはありますか?
別の質問:int
は、すべてのプラットフォームでデータを失うことなく(キャストによって)long
を保持できますか?
int
(ランタイム内のSystem.Int32
)は常にすべてのプラットフォームで符号付き32ビット整数であり、long
(別名System.Int64
)は常に符号付き64ビットです。任意のプラットフォームの整数。そのため、データを失うことなく、Int32.MaxValue
より上またはInt32.MinValue
より下の値を持つlong
からキャストすることはできません。
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がスローされます。明示的なキャストを使用すると、予期しない結果になります。
int
は.NETでは32ビットです。 long
は64ビットです。それは保証されています。そのため、int
はデータを失うことなく長く保持できません。
実行しているプラットフォームに応じてサイズが変化するタイプがあります。これはIntPtr
(およびUIntPtr)です。これは32ビットまたは64ビットです。
確かに違いがあります-C#では、longは64ビットの符号付き整数、intは32ビットの符号付き整数であり、常にそうです。
C#では、longはintを保持できますが、intはlongを保持できません。
C/C++の質問はプラットフォームに依存しています。
C#では、int
はSystem.Int32
およびlong
はSystem.Int64
;前者は32ビットで、後の64ビットです。
C++は、比較してint/longのサイズについて漠然とした保証のみを提供します(正確で詳細な情報については、C++標準を掘り下げることができます)。
Intは32ビット整数、longは64ビット整数だと思います。