• ベストアンサー

forの考え方(初級)

こんにちは。質問させて下さい。 下記コード1~100までを100~1までに変更する場合、 for(i=100; i < 1; i--){ じゃダメですか?旨くいきません。。 あと、dat[i] = i+1の +1とは\0の+1でしょうか? #include <stdio.h> int main() { int dat[100]; for(int i = 0; i < 100; i++){ dat[i] = i+1; printf("%3d", dat[i]); } return 0; }

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

  • ベストアンサー
  • kupotti
  • ベストアンサー率16% (1/6)
回答No.3

for (初期化式; 継続条件式; 再初期化式) なので、 for(int i = 0; i < 100; i++) であれば、 ・iに1を設定(初期化) ・iが100より小さい間ループ(継続条件) ・ループのたびに1加算(再初期化) ですし、 for(i=100; i < 1; i--) であれば、 ・iに100を設定(初期化) ・iが1より小さい間ループ(継続条件) ・ループのたびに1減算(再初期化) なので、最初のループに入る条件のところで、iは1より小さくないので、ぬけます。

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec06-2.html
yukemuri2
質問者

補足

回答頂いた方々にお詫び。 そもそも、 for(int i = 0; i > 100; i++)を for(int i = 0; i < 100; i++)と 記述してしまいました…。 よく確認してませんでした。申し訳ない…。

その他の回答 (2)

  • begin2719
  • ベストアンサー率36% (14/38)
回答No.2

>下記コード1~100までを100~1までに変更する場合、 と有りますが元は0から99までです。 for(i=100; i >= 1; i--){ と訂正しましたが範囲が違っていれば修正のこと >dat[i] = i+1の +1とは\0の+1でしょうか? その時点のiに1を加えることです。

yukemuri2
質問者

補足

1~100だと for(i=1; i >=100; i++) ですもんね。 すみません。。

回答No.1

ヒントだけ。 ・元のfor文で、iの範囲は1~100ではない。 ・配列dat[]の要素数に注意。

yukemuri2
質問者

補足

正確に記述しなてませんでした。 1~100まででありませんでした。 申し訳ないです。

関連するQ&A