ネスト構造について今ひとつ読んでる入門書だけじゃ理解できないので教えて下さい
これってどういう順番で実行されてるんですか?
for (int i = 0; i <= 5; i++) {
for (int j = 0; j < i; j++) {
cout << '*';
}
cout << endl;
}
ネストforについて教えて下さい(入門
Re: ネストforについて教えて下さい(入門
ループの中で、*のかわりに
iとjの値を出力してみたらどうですか?
iとjの値を出力してみたらどうですか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: ネストforについて教えて下さい(入門
フォーラムルールに従って、codeタグを使用してください。
さて、実行順序ですが、次のコードで見てみましょう。
#include <iostream>
using namespace std;
int k = 0;
void p(const char *s) { cout << " " << ++k << ": " << s << endl; }
int main()
{
for (int i = (p("i = 0"), 0); p("i <= 5"), i <= 5; p("i++"), i++) {
for (int j = (p("j = 0"), 0); p("j < i"), j < i; p("j++"), j++) {
p("cout << '*'"), cout << '*';
}
p("cout << endl"), cout << endl;
}
}
1: i = 0
2: i <= 5
3: j = 0
4: j < i
5: cout << endl
6: i++
7: i <= 5
8: j = 0
9: j < i
10: cout << '*'
* 11: j++
12: j < i
13: cout << endl
14: i++
15: i <= 5
16: j = 0
17: j < i
18: cout << '*'
* 19: j++
20: j < i
21: cout << '*'
* 22: j++
23: j < i
24: cout << endl
25: i++
26: i <= 5
27: j = 0
28: j < i
29: cout << '*'
* 30: j++
31: j < i
32: cout << '*'
* 33: j++
34: j < i
35: cout << '*'
* 36: j++
37: j < i
38: cout << endl
39: i++
40: i <= 5
41: j = 0
42: j < i
43: cout << '*'
* 44: j++
45: j < i
46: cout << '*'
* 47: j++
48: j < i
49: cout << '*'
* 50: j++
51: j < i
52: cout << '*'
* 53: j++
54: j < i
55: cout << endl
56: i++
57: i <= 5
58: j = 0
59: j < i
60: cout << '*'
* 61: j++
62: j < i
63: cout << '*'
* 64: j++
65: j < i
66: cout << '*'
* 67: j++
68: j < i
69: cout << '*'
* 70: j++
71: j < i
72: cout << '*'
* 73: j++
74: j < i
75: cout << endl
76: i++
77: i <= 5
Re: ネストforについて教えて下さい(入門
「式」と「式と同じ文字列」を書くのは煩わしいので、かずま さんが書きました: ↑5年前さて、実行順序ですが、次のコードで見てみましょう。
マクロを使って書き直してみました。
#include <iostream>
using namespace std;
int k = 0;
void p(const char *s) { cout << " " << ++k << ": " << s << endl; }
#define v(s) (p(#s), (s))
int main()
{
p("i = 0");
for (int i = 0; v(i <= 5); v(i++)) {
p("j = 0");
for (int j = 0; v(j < i); v(j++)) {
v(cout << '*');
}
v(cout << endl);
}
}
どういう順番で実行されてるのか、まだ分かりませんか?