2

私は次のことをしようとしました

i=0;
if (i++ % Max_Col_items == 0 && i !=0)
{

}

i途中で増加していることを発見

i % Max_Col_items == 0;
i=i+1;
i !=0;

私が最終的に増加を追加するだろうと思ったときi

i % Max_Col_items == 0;
i !=0;
i=i+1;

i++C#でどのように機能するかについての説明を見つけられる人はいますか?

4

3 に答える 3

3

i++は、インクリメントされたものではなく、元の値を提供します。次の の使用時に変更が表示されますi。増分値を取得する場合は、 を使用します++i

同じ問題に関する Eric Lippertによる詳細な回答を参照してください。

于 2012-12-03T10:34:27.063 に答える
0

i++の値をすぐにインクリメントしますが、iインクリメント前の値として評価されます。

コード行の終わりまで、値は変更されません。これはi、期待どおりのように見えます。

于 2012-12-03T10:36:22.790 に答える
0

それは(あなたが正しく指摘したように)だからです

i % Max_Col_items == 0;

それ自体が操作です。その操作行が ( i の値で) 終了すると、インクリメントが完了します。

于 2012-12-03T10:49:21.940 に答える