#3
by かずま » 5年前
ああああっ さんが書きました: ↑5年前
ネスト構造について今ひとつ読んでる入門書だけじゃ理解できないので教えて下さい
これってどういう順番で実行されてるんですか?
フォーラムルールに従って、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
[quote=ああああっ post_id=151282 time=1532988817]
ネスト構造について今ひとつ読んでる入門書だけじゃ理解できないので教えて下さい
これってどういう順番で実行されてるんですか?
[/quote]
フォーラムルールに従って、codeタグを使用してください。
さて、実行順序ですが、次のコードで見てみましょう。
[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;
}
}
[/code]
実行結果
[code]
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
[/code]