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

入門書に書いていたコードです。

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

A 回答 (5件)

>for(i = 0; i < 6; i++) {



i++は、i = i+1の短縮形
代入文により i+1 の結果が i に代入され、i は変化(増加)する

>printf("No.%d:",i+1);

i+1の結果だけがprintfへ引き渡され、 i 自体は変化せず
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 10:45

実際に数値を入力しながら順を追ってみたら分かりやすいと思います。




■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増やすという意味ではないと
いうことです。ご理解いただけたでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 10:45

for文の中で最初にi++で1プラスされて


i=1
printfのところでi+1でプラス1で
2になる
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 10:46

printfの i+1 をただの i だけにして


考えてみれば?


その i だけの時の値に,+1した値が結果として出るだけだから.
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 10:46

>printfのところでi+1でプラス1されているので



その演算結果はprintf()の引数として渡されるだけで、iの値は変化しません。

printf("No.%d:",i++);
だったら想像の通りに…なりますかね。
# printf("No.%d:",++i); とで結果が変わると思いますが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 10:47

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