• ベストアンサー

i++と++i ってどう違うのですか?

i++と++i ってどう違うのですか? C#です。

質問者が選んだベストアンサー

  • ベストアンサー
  • kamicha1
  • ベストアンサー率47% (44/92)
回答No.4

++や--を変数の前に置く演算を「前置演算」、++や--を変数の後に置く演算を「後置演算」といい、その違いは、次のようになります。 前置演算:先に処理(++や--)をしてから代入 (例)i=2;    a=++i;     ~~~     先に処理 : iは3    ~~~~~    後から代入 : aは3 後置演算:先に代入してから処理(++や--) (例)i=2;    a=i++;    ~~~    先に処理   : aは2     ~~~~~     後から代入 : iは3

すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.5

直接の回答ではありませんが、ひと言アドバイスさせてください。 私の経験から、インクリメント(++)もデクリメント(--)も、単独の式以外では使わないでおこう、です。 条件判定の中や、他の項と組み合わせた式の中で使うと、良くバグります。 バグっていなくても、他の人が見たときに、あるいは将来自分自身が見たときにおいても、解りにくいことも事実です。 言語仕様としては、他のかたがたがお答えになられていますし、あなたは、こんな私の回答をお求めになられていないかもしれません。お許しください。 でも、前置と後置との両仕様の理解も大切ですが、自分のプログラムを読みやすくすることの方がもっと大切なことだと思います。 単なるおせっかいですが、ご参考まで。

hiyoruki
質問者

お礼

皆様 ご回答ありがとうございました。 なんとなく分かったようにきがします

すると、全ての回答が全文表示されます。
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.3

これはC#に限った事ではなく、C++やCでも同じです。 かなり端折りますがお許し下さい。 main() {   int i,j ;   i = j = 0 ;   printf("i=%d, j=%d\n",i++,++j); } (全然C#ではないですね。) だと実行結果はどうなると思いますか。 i=0, j=0 i=0, j=1 i=1, j=1 答えは i=0, j=1 です。 i++はiをインクリメントする前にprintfで評価され ++jはjをインクリメントしてからprintfで評価されたという事です。 どちらもprintf後は1になっているんです。 お解りいただけたでしょうか。

すると、全ての回答が全文表示されます。
  • Seiryo
  • ベストアンサー率13% (27/203)
回答No.2

C++++ってやったことないけども、 インクリメントのタイミングの違いでは?

参考URL:
http://www.kurumi.sakura.ne.jp/~kumicyou/c/teachyourselfc/0205.html
すると、全ての回答が全文表示されます。
  • maiton3
  • ベストアンサー率6% (4/58)
回答No.1

加算されるタイミングかと。for文とかだと, ループの最初か,最後かの違い。 でも,あまりつかったことないなー,++i。

すると、全ての回答が全文表示されます。

関連するQ&A