次のコード スニペットを実行した後、int d の値が 26 ではなく 25 になるのはなぜですか?
int n = 20;
int d = n++ + 5;
Console.WriteLine(d);
次のコード スニペットを実行した後、int d の値が 26 ではなく 25 になるのはなぜですか?
int n = 20;
int d = n++ + 5;
Console.WriteLine(d);
n++
初期値が周囲の式で使用された後にのみ値をインクリメントする「後置インクリメント演算子」です。
あなたのコードは以下と同等です:
int d = n + 5;
n = n + 1;
値が使用される前に値をインクリメントする++n
には、プリインクリメント演算子を使用します。
++n
その式でインクリメントされた値を使用する必要があるためです。
参照してください、式ツリーでは、値を返しますが、使用される次の式に対して値をインクリメントするため、インクリメントしてから加算n
でその値を使用しません。n++
n
ただし、++n
実際にはn
、この式のインクリメントされた値を返します。
したがって、yieldに対してn++ + 5
yields .25
++n + 5
26
n++
操作の後に加算を実行することを意味するため、最初の d は等しくなりn+5
、次にn
発生します。
n++
最初に値を割り当て、反復の完了後にインクリメントするため、25 を与える理由です。
したがって、
int d= n++ + 5;
と解釈されます
int d = n + 5;