- - PR -
C#でi++と++iについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-12-14 16:50
いつもお世話になってます。
さっそくですが、iの値を1ずつ増やしていく場合、「i++」と「++i」で違いがあるのでしょうか??ご存知の方がいらっしゃいましたら、ご教授下さい。 | ||||||||
|
投稿日時: 2004-12-14 17:07
Console.WriteLine(i++);
Console.WriteLine(++i); で調べてみてはいかがでしょうか? | ||||||||
|
投稿日時: 2004-12-14 17:12
まず、結果を使わないという前提で、ほぼ同じです。
VC++6.0の場合は、iが数値ならば、アセンブラも一緒です。 iがSTL::listの反復子の場合は、アセンブラが異なります。 (++iの方が無駄な命令がないので、効率的) C#の場合は、コンパイルしてMSILを見てみればわかるかと思います。 (誰かお願い) ちなみに、私は、どちらでもよい場合は、++iと書きますが、 世間一般では、K&Rの影響から、i++が圧倒的に多いです。 | ||||||||
|
投稿日時: 2004-12-14 17:13
ソースの読みやすさに違いがある, 記号が前にあるほうが、読みにくい。
といっても、すぐ慣れます。どちらでも良い、が答えです。 左利き、右利き みたいなもの [ メッセージ編集済み 編集者: MMX 編集日時 2004-12-14 17:22 ] | ||||||||
|
投稿日時: 2004-12-14 17:23
「for」の構文にて利用する場合、条件比較してからインクリメントするのか、
インクリメントしてから条件比較するかのを意識する以外は、i++を利用して います。 | ||||||||
|
投稿日時: 2004-12-14 17:36
単純に一文で i++, ++i しか行わないなら結果は変わりません。
--- 実用的なことを知りたいならそれで十分ですが、言語仕様を知りたいなら話は変わってきます。ドキュメントを読んでね、と書いている回答者がいないことが不思議だったりします。 --- 7.5.9 後置インクリメント演算子と後置デクリメント演算子
7.6.5 前置インクリメント演算子と前置デクリメント演算
それぞれプロパティの場合等もありますが、とりあえず変数の場合だけ引用。 a=x++; a=++x; で結果が異なる、というのは有名な話なので。 | ||||||||
|
投稿日時: 2004-12-14 17:36
ありがとうございました。たくさんの返答を頂き感謝感激です。
皆さんの返答を理解したのち、Console.Writeで実験してみました。 | ||||||||
|
投稿日時: 2004-12-14 20:51
「どちらでも良い」けれど「どちらも一緒」ではない、ということも、一応。
#意味のある例を提示できなくて申し訳ないんですが…。
|