次のコード スニペットを実行した後、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++ + 5yields .25++n + 526
n++操作の後に加算を実行することを意味するため、最初の d は等しくなりn+5、次にn発生します。
n++最初に値を割り当て、反復の完了後にインクリメントするため、25 を与える理由です。
したがって、
int d= n++ + 5;
と解釈されます
int d = n + 5;