30

私のC#ソースコードでは、整数を次のように宣言している可能性があります。

int i = 5;

また

Int32 i = 5;

現在普及している32ビットの世界では、それらは同等です。しかし、64ビットの世界に移行するとき、次のことが同じになると言っているのは正しいですか?

int i = 5;
Int64 i = 5;
4

10 に答える 10

47

いいえ。C#仕様では、これが正確に32ビットintのエイリアスであると厳密に定義されています。System.Int32これを変更することは、大きな重大な変更になります。

于 2008-10-02T21:15:18.663 に答える
43

C#のintキーワードは、型のエイリアスとして定義されておりSystem.Int32、これは(名前で判断すると)32ビット整数を意味します。仕様に:

CLI仕様セクション8.2.2(組み込み値と参照型)には、次の表があります。

  • System.Int32-符号付き32ビット整数

C#仕様セクション8.2.1(事前定義されたタイプ)にも同様の表があります。

  • int--32ビット符号付き整数型

System.Int32これにより、CLRとintC#の両方が常に32ビットになることが保証されます。

于 2010-07-14T18:45:34.537 に答える
18

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は、さまざまなアーキテクチャでサイズを変更します。

于 2010-07-14T20:50:54.673 に答える
12

intInt32すべてのプラットフォームで常に同義です。

int32ビットであると想定している既存のコードの多くを壊してしまうため、Microsoftが将来これを変更する可能性はほとんどありません。

于 2010-07-14T18:45:30.610 に答える
5

あなたが混乱するかもしれないintのは、それがエイリアスでInt32あるため、常に4バイトになることだIntPtrと思いますが、CPUアーキテクチャのワードサイズと一致すると想定されるため、32ビットシステムでは4バイト、システムでは8バイトになります64 ビット システム。

于 2010-07-14T19:00:30.423 に答える
4

C# 仕様ECMA-334のセクション「11.1.4 Simple Types」によると、予約語intは にエイリアスされSystem.Int32ます。これは仕様にあるため、変更される可能性はほとんどありません。

于 2010-07-14T18:48:39.497 に答える
3

CLR の 32 ビット バージョンまたは 64 ビット バージョンのどちらを使用しているかに関係なく、C# では常に anintを意味System.Int32し、long常に を意味しSystem.Int64ます。

于 2008-10-02T21:28:38.427 に答える
0

はい、ジョンが言ったように、そして「C / C ++の世界」とは異なり、JavaとC#はそれらが実行されているシステムに依存していません。これらは、すべてのシステムで等しい、byte / short / int/longおよびsingle/double精度floatの長さを厳密に定義しています。

于 2008-10-02T21:22:03.843 に答える
-1

接尾辞のない int は、32 ビットまたは 64 ビットのいずれかであり、それが表す値によって異なります。

MSDN で定義されているように:

整数リテラルにサフィックスがない場合、その型は、その値を表すことができるこれらの型 (int、uint、long、ulong) の最初のものになります。

アドレスは次のとおりです: https://msdn.microsoft.com/en-us/library/5kzh1b5w.aspx

于 2015-08-20T23:31:12.670 に答える