アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

C#です。

A 回答 (5件)

++や--を変数の前に置く演算を「前置演算」、++や--を変数の後に置く演算を「後置演算」といい、その違いは、次のようになります。



前置演算:先に処理(++や--)をしてから代入
(例)i=2;
   a=++i;
    ~~~
    先に処理 : iは3
   ~~~~~
   後から代入 : aは3

後置演算:先に代入してから処理(++や--)
(例)i=2;
   a=i++;
   ~~~
   先に処理   : aは2
    ~~~~~
    後から代入 : iは3
    • good
    • 16

直接の回答ではありませんが、ひと言アドバイスさせてください。



私の経験から、インクリメント(++)もデクリメント(--)も、単独の式以外では使わないでおこう、です。

条件判定の中や、他の項と組み合わせた式の中で使うと、良くバグります。
バグっていなくても、他の人が見たときに、あるいは将来自分自身が見たときにおいても、解りにくいことも事実です。

言語仕様としては、他のかたがたがお答えになられていますし、あなたは、こんな私の回答をお求めになられていないかもしれません。お許しください。

でも、前置と後置との両仕様の理解も大切ですが、自分のプログラムを読みやすくすることの方がもっと大切なことだと思います。

単なるおせっかいですが、ご参考まで。
    • good
    • 8
この回答へのお礼

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

お礼日時:2003/05/15 00:50

これは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になっているんです。

お解りいただけたでしょうか。
    • good
    • 6

C++++ってやったことないけども、


インクリメントのタイミングの違いでは?

参考URL:http://www.kurumi.sakura.ne.jp/~kumicyou/c/teach …
    • good
    • 0

加算されるタイミングかと。

for文とかだと,
ループの最初か,最後かの違い。
でも,あまりつかったことないなー,++i。
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!