• ベストアンサー

プログラミング C言語

入門書に書いていたコードです。 for(i = 0; i < 6; i++) { printf("No.%d:",i+1); これを実行すると No.1:No.2: という風に増えていきます。 最初にNo.1と表示されるのはわかりますが、2週目は iがfor文の中で最初にi++で1プラスされてからさらにprintfのところでi+1でプラス1されているので No.3,No.5という風になっていくと思ったのですがなぜNo.1から順番になるのか理解できません。 教えてくださいm(_ _ )m

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

  • ベストアンサー
  • shino719
  • ベストアンサー率50% (11/22)
回答No.4

実際に数値を入力しながら順を追ってみたら分かりやすいと思います。 ■1ループ目 for(i = 0; i < 6; i++) {    ←この時点でiの値は0 printf("No.%d:",i+1);     ↓数値に置き換えると printf("No.%d:",0+1);     ←しかしこの時点でi自身が+1されるわけではない ■2ループ目 for(i = 0; i < 6; i++) {    ←この時点で「i++」によりiは+1されて、iの値は1 printf("No.%d:",i+1);     ↓数値に置き換えると printf("No.%d:",1+1); ■3ループ目 for(i = 0; i < 6; i++) {    ←この時点で「i++」によりiは+1されて、iの値は2 printf("No.%d:",i+1);     ↓数値に置き換えると printf("No.%d:",2+1); 以下繰り返し。。。 つまりprintf関数にある「i+1」はiのそのときの数値に1加えたものを 設定するという意味ですが、i自身の値を1増やすという意味ではないと いうことです。ご理解いただけたでしょうか。

CooLNight
質問者

お礼

わかりました。ありがとうございますm(_ _ )m

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

その他の回答 (4)

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.5

>for(i = 0; i < 6; i++) { i++は、i = i+1の短縮形 代入文により i+1 の結果が i に代入され、i は変化(増加)する >printf("No.%d:",i+1); i+1の結果だけがprintfへ引き渡され、 i 自体は変化せず

CooLNight
質問者

お礼

わかりました。ありがとうございますm(_ _ )m

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

for文の中で最初にi++で1プラスされて i=1 printfのところでi+1でプラス1で 2になる

CooLNight
質問者

お礼

わかりました。ありがとうございますm(_ _ )m

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

printfの i+1 をただの i だけにして 考えてみれば? その i だけの時の値に,+1した値が結果として出るだけだから.

CooLNight
質問者

お礼

わかりました。ありがとうございますm(_ _ )m

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>printfのところでi+1でプラス1されているので その演算結果はprintf()の引数として渡されるだけで、iの値は変化しません。 printf("No.%d:",i++); だったら想像の通りに…なりますかね。 # printf("No.%d:",++i); とで結果が変わると思いますが。

CooLNight
質問者

お礼

わかりました。ありがとうございますm(_ _ )m

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

関連するQ&A