- ベストアンサー
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; }
- みんなの回答 (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より小さくないので、ぬけます。
その他の回答 (2)
- begin2719
- ベストアンサー率36% (14/38)
>下記コード1~100までを100~1までに変更する場合、 と有りますが元は0から99までです。 for(i=100; i >= 1; i--){ と訂正しましたが範囲が違っていれば修正のこと >dat[i] = i+1の +1とは\0の+1でしょうか? その時点のiに1を加えることです。
補足
1~100だと for(i=1; i >=100; i++) ですもんね。 すみません。。
- Hayashi_Trek
- ベストアンサー率44% (366/818)
ヒントだけ。 ・元のfor文で、iの範囲は1~100ではない。 ・配列dat[]の要素数に注意。
補足
正確に記述しなてませんでした。 1~100まででありませんでした。 申し訳ないです。
補足
回答頂いた方々にお詫び。 そもそも、 for(int i = 0; i > 100; i++)を for(int i = 0; i < 100; i++)と 記述してしまいました…。 よく確認してませんでした。申し訳ない…。