0

ヘイこの質問が以前に尋ねられたとしても私は知りませんでしたが、私の問題は次のとおりです。
私のc#コンソールアプリケーションでは、 int i = 0として値を割り当てて 変数iを宣言しましたが、今度はiを2ずつインクリメントしたいので、次のcedeを使用できます。

int i = o;
i += 2;
Console.WriteLine(i); 
Console.ReadLine(); 
//OUTPUT WILL BE 2

しかし、これは私の代替ソリューションです。私の怠惰な行動として、私はこのコードの使用を拒否し、次のコードを使用していました。

int i = 0;
i += i++;
Console.WriteLine(i);
Console.ReadLine();

上記のコードでは、最初にi ++が1ずつインクリメントされ、その後もi + = iずつインクリメントされることを受け入れましこれは発生しません。!!!
なぜこのようなことが起こっているのかわかりません。何か間違ったことをしたのか、コンパイルの問題があったのかもしれません。????? なぜこれが起こっているのか誰かが私に提案できますか???? コード2が機能しない理由を知りたいだけですか?そこで何が起こっているのですか?

4

3 に答える 3

2

i++ は i の値 (0) を返し、1 を加算します。i++ はpost-incrementと呼ばれます。

あなたが求めているのは ++i です。これは、最初に 1 増加してから、増加した数値を返します。

(増分演算子の詳細については、 http://msdn.microsoft.com/en-us/library/aa691363 (v=vs.71).aspx を参照してください)

于 2012-12-05T15:52:07.000 に答える
0

iこれを機能させるには、1から始める必要があります。

int i = 1;

編集::

int i = 0;
i += i++;

上記のコードは次のことを表しています。

i + 0次に1つ追加します

使用する場合は、事前に増分を処理したとおりにi += ++i;取得します。i + 1

于 2012-12-05T15:50:46.150 に答える
0

あなたのコードがしていること:

  • 「i++」が評価されます。「i++」の値はvalue of i before the increment起こります。
  • 「i++」の評価の一環として、i is incremented by one。今、私は1の値を持っています。
  • 割り当てが実行されます。iには、「i ++」の値が割り当てられます。これは、ibeforeの増分の値、つまり0です。

つまり、「i =i++」は大まかに次のように変換されます

int oldValue = i; 
i = i + 1 
//is the same thing as 
i = oldValue; 

post-increment演算子は、i ++の実行後に、整数「i」の値をインクリメントします

ご参考までに:

 i++ will increment the value of i, but return the pre-incremented value.
 ++i will increment the value of i, and then return the incremented value.

したがって、2ステップの増分を実行する最良の方法は次のようになります。

i +=2 
于 2012-12-05T15:56:14.537 に答える