6

次のコード スニペットを実行した後、int d の値が 26 ではなく 25 になるのはなぜですか?

int n = 20;
int d = n++ + 5;

Console.WriteLine(d);
4

6 に答える 6

11

n++初期値が周囲の式で使用されたにのみ値をインクリメントする「後置インクリメント演算子」です。

あなたのコードは以下と同等です:

int d = n + 5;
n = n + 1;

値が使用されるに値をインクリメントする++nには、プリインクリメント演算子を使用します。

于 2013-10-15T12:19:38.047 に答える
3

++nその式でインクリメントされた値を使用する必要があるためです。

参照してください、式ツリーでは、値を返しますが、使用される次の式に対して値をインクリメントするため、インクリメントしてから加算nでその値を使用しません。n++n

ただし、++n実際にはn、この式のインクリメントされた値を返します。

したがって、yieldに対してn++ + 5yields .25++n + 526

于 2013-10-15T12:18:03.690 に答える
2

n++操作の後に加算を実行することを意味するため、最初の d は等しくなりn+5、次にn発生します。

于 2013-10-15T12:19:13.827 に答える
2

n++最初に値を割り当て、反復の完了後にインクリメントするため、25 を与える理由です。

したがって、

int d= n++ +  5; 

と解釈されます

int d = n +  5;
于 2013-10-15T12:19:30.750 に答える