私のC#ソースコードでは、整数を次のように宣言している可能性があります。
int i = 5;
また
Int32 i = 5;
現在普及している32ビットの世界では、それらは同等です。しかし、64ビットの世界に移行するとき、次のことが同じになると言っているのは正しいですか?
int i = 5;
Int64 i = 5;
いいえ。C#仕様では、これが正確に32ビットintのエイリアスであると厳密に定義されています。System.Int32これを変更することは、大きな重大な変更になります。
sizeof(testInt)は8になりますか?
いいえ、sizeof(testInt)はエラーです。testIntはローカル変数です。sizeof演算子には、引数として型が必要です。常にエラーになるため、これが8になることはありません。
VS2010は、64ビットマシンでも、ac#マネージ整数を4バイトとしてコンパイルします。
正しい。C#仕様のセクション18.5.8はsizeof(int)、コンパイル時定数4として定義されていることに注意してください。つまり sizeof(int)、コンパイラーは単にそれを4に置き換えます。ソースコードで「4」と言ったのと同じです。
C#の標準の「int」が64ビットになるかどうか/いつになるか誰かが知っていますか?
一度もない。C#仕様のセクション4.1.4には、「int」は「System.Int32」の同義語であると記載されています。
必要なのが「ポインタサイズの整数」である場合は、IntPtrを使用します。IntPtrは、さまざまなアーキテクチャでサイズを変更します。
intInt32すべてのプラットフォームで常に同義です。
int32ビットであると想定している既存のコードの多くを壊してしまうため、Microsoftが将来これを変更する可能性はほとんどありません。
あなたが混乱するかもしれないintのは、それがエイリアスでInt32あるため、常に4バイトになることだIntPtrと思いますが、CPUアーキテクチャのワードサイズと一致すると想定されるため、32ビットシステムでは4バイト、システムでは8バイトになります64 ビット システム。
C# 仕様ECMA-334のセクション「11.1.4 Simple Types」によると、予約語intは にエイリアスされSystem.Int32ます。これは仕様にあるため、変更される可能性はほとんどありません。
CLR の 32 ビット バージョンまたは 64 ビット バージョンのどちらを使用しているかに関係なく、C# では常に anintを意味System.Int32し、long常に を意味しSystem.Int64ます。
はい、ジョンが言ったように、そして「C / C ++の世界」とは異なり、JavaとC#はそれらが実行されているシステムに依存していません。これらは、すべてのシステムで等しい、byte / short / int/longおよびsingle/double精度floatの長さを厳密に定義しています。
接尾辞のない int は、32 ビットまたは 64 ビットのいずれかであり、それが表す値によって異なります。
MSDN で定義されているように:
整数リテラルにサフィックスがない場合、その型は、その値を表すことができるこれらの型 (int、uint、long、ulong) の最初のものになります。
アドレスは次のとおりです: https://msdn.microsoft.com/en-us/library/5kzh1b5w.aspx