プロが教えるわが家の防犯対策術!

C言語について質問です。
画像のプログラムを実行した時、iとjが4になる理由がいまいちわかりません。++は+1するので答えは3だと思っていたのですが、この場合はiの値を足すのでしょうか?

「C言語について質問です。 画像のプログラ」の質問画像

質問者からの補足コメント

  • iとjが4とかいていますが、iとkの間違いです。
    紛らわしくして申し訳ないです

      補足日時:2019/07/25 16:37

A 回答 (3件)

i=2; //この時点でiは2


j=i++; //まずiの値をjに代入してiをインクリメント。iは3でjは2
k=++i; //まずiをインクリメント、その結果をkに代入。iは4でkも4

代入とインクリメントの順番に約束を覚えましょう。

次のような場合はどうなるか考えてみると面白い。

int i=1,j=1,k;
k= i+++j;

この後のi,j,kの値は?
(こんなコード書かないでね。一応動くけど)
    • good
    • 1
この回答へのお礼

丁寧な解答ありがとうございます!
自分の中で引っかかっていたのがきれいになくなりました!
最後の問題?についてはさっぱりでした。(-_-;)
一応、k=i + (++j)と考えて
i=1,j=2,k=3
かなとは思いましたがどうでしょうか(^-^;

お礼日時:2019/07/26 07:16

i++ は i の値を 1 増やすけど, この式の値そのものは「増える前」の i の値.



++i は i の値を 1 増やし, この式の値は「増えた後」の i の値.

#1 では「代入とインクリメントの順番」としか書いてないけど, もっと一般に
インクリメント (やデクリメント) の効果
として理解すべきだと思う... と思ったら, 画像にも「代入との前後関係」って書いてあるんだなぁ. もっとましな書き方をしてほしいものだ (嘆息)

まあ自分で書くだけなら理解しなくても (書かなきゃいいだけだから) 困らないけど, 他人の書いたプログラムを読めなくなりかねないからね.
    • good
    • 1

2+1+1=4

    • good
    • 1

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