0

私は C++ の学生ですが、この for ループの理由を理解するのに苦労しています。

for (int i=0; i<5; i++)
{
    for (int j=0; j<5; j++)
    {
        cout << i << endl;
    }
}

出力を次のように表示します: 0000011111222223333344444

内側のループが終了した後に外側のループが実行されることを理解しています。しかし、その場合、出力は 0123401234012340123401234 のようになりませんか? 内側のループが最初に完了する必要がある場合、そのパターンがないのはなぜですか?

4

6 に答える 6

3

j内側のループの変数ではなく、i外側のループの変数を出力しているためです。それ以外の場合、出力は予測どおりになります。;)

于 2013-06-02T00:22:08.383 に答える
3

i内側のループで印刷しています。印刷する場合はj、 になります0123401234012340123401234

于 2013-06-02T00:22:24.080 に答える
3

表示される変数は is iand notjiあるため、内側のループで 5 回表示され、外側のループでその値が変更されます。

于 2013-06-02T00:22:38.737 に答える
0

単純に変更すると、目的の出力が得られます。

cout << i << endl;

...に

cout << j << endl;

また、スタイルに関しては、forループでi++andj++++iandに変更することを検討してください++j。その理由については、C++ FAQ から13.15を参照してください。どちらがより効率的ですか: i++ または ++i? :

抜粋:

i++古い行の C プログラマーは、代わりにを書くことに慣れてい++iます。たとえば、彼らは言うでしょうfor (i = 0; i < 10; i++)....これはi++、より大きな式の一部としてではなく、ステートメントとして使用するため、代わりに使用したい場合があります++i。対称性については、速度が向上しない場合でも、個人的にはそのスタイルを推奨しています...

于 2013-06-02T01:01:01.927 に答える