1

以下に示す変数を宣言する 2 つの方法は同じですか?

int aa= 0, bb= 0, cc= 0, dd= 0;

int aa= 0;
int bb= 0;
int cc= 0;
int dd= 0;
4

3 に答える 3

2

はい、これ:

int aa = 0, bb = 0, cc, dd;

次の、より一般的で読みやすいバージョンとまったく同じです。

int aa = 0;
int bb = 0;
int cc;
int dd;

Soner Gönül が示すように、同じ IL コードを生成します。

しかし、物事はそれよりも微妙な場合があるため、あなたは良い質問をしました.

ポインター

安全でない C# では、ポインターを操作できます。整数へのポインタは と書きますint*。したがって、 type の 3 つの変数を宣言する場合は、次のint*ように記述します。

int* aa, bb, cc;

そして、それはあなたの意図を正しく表しています:

int* aa;
int* bb;
int* cc;

ただし、ポインターの構文は、はるかに古い言語 C から派生したものであり、C で 3 つのポインター変数を次のように宣言すると、次のようになります。

int* aa, bb, cc;

次に、それは微妙に異なる何かを意味し、実際に書いた:

int* aa;
int bb;
int cc;

そのため、C 開発者は、 のみがポインター型であり、残りは通常の整数であるint *aaことを示すために代わりに記述します。aa

int *aa, bb, cc;

しかし、私はあなたがそのようなことを完全に C で書くことを思いとどまらせます: それは紛らわしいからです。

Visual Basic と VB.Net

Visual Basic .NET では、変数を 1 行で宣言することもできます。

Dim aa, bb As Integer

そして、これは次と同じです:

Dim aa As Integer
Dim bb As Integer

しかし、Visual Basic (VB.Net の前身) でプログラミングする場合は、次のようになります。

Dim aa, bb As Integer

意味:

Dim aa As Any     'aa Is Variant
Dim bb As Integer
于 2013-03-22T13:10:21.960 に答える
1

それらは同じです。名前がもう少し説明的になれば、おそらく2番目のオプションの方が読みやすいと思います。

于 2013-03-22T12:49:38.310 に答える
1

はい

C# は単一のステートメントをサポートし、複数のローカル変数を割り当てることができます

1 つのステートメントで複数のローカル変数を割り当てることができます。C スタイルの構文から派生した言語では、コンマを使用して 1 つのステートメントで複数の変数を宣言できることがよくあります。C# 言語ではこれが可能です。

から8.5.1 Local variable declarations

複数の変数を宣言するローカル変数の宣言は、同じ型の単一の変数を複数宣言することと同じです。さらに、ローカル変数宣言の変数初期化子は、宣言の直後に挿入される割り当てステートメントに正確に対応します。

最初のもののILコード;

 .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret

2 番目のILコード。

  .maxstack  1
  .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
于 2013-03-22T12:52:57.180 に答える