作者tropical72 (藍影)
看板C_and_CPP
標題Re: [問題] 巢狀迴圈
時間Thu Aug 18 21:59:03 2011
先做個引言。
for loop 裡面執行順序是這樣的
for( (1)初始值設定; (2)判斷條件; (3)遞增值 / 遞減值 (或其他動作))
{
(4) 述敘;
}
而 loop 的動作順序是
(1) -> 只跑一次
(2) -> 如果 (2) 成立的話就跑 (4), (3)
(4) -> (2) 成立的話才執行
(3) -> (2) 成立的話才執行
(2) (4) (3). (2) (4) (3)....
一直跑到 (2) 不成立為止。
順序非常重要!
------
※ 引述《shile775 (笑看人生)》之銘言:
由於不好說明,我們把問題先簡化,只考慮內層回圈的狀況
: #define ROWS 6
: int i=3;
: {
: for((1)ch = 'F';
(2)'F' <= (ch+i);
(3)ch--)
: (4) printf("%c", ch);
: putchar('\n');
: }
----
1. (1) 初始設定, ch = 'F'
----
2. (2) ch = 'F', 'F' <= (ch+3) ('F'+3='I') 成立, 執行以下動作
(4) 輸出 ch ('F')
(3) 執行 --ch , ch = 'E'
----
3. (2) ch = 'E', 'F' <= (ch+3) ('E'+3='H') 成立, 執行以下動作
(4) 輸出 ch ('E')
(3) 執行 --ch , ch = 'D'
----
4. (2) ch = 'D', 'F' <= (ch+3) ('D'+3='G') 成立, 執行以下動作
(4) 輸出 ch ('D')
(3) 執行 --ch , ch = 'C'
----
5. (2) ch = 'C', 'F' <= (ch+3) ('C'+3='F') 成立, 執行以下動作
(4) 輸出 ch ('C')
(3) 執行 --ch , ch = 'B'
----
6. (2) ch = 'B', 'F' <= (ch+3) ('B'+3='E') 不成立, 跳出回圈
----
於是最後跳出回圈後,總共輸出了 FEDC。
上述以 i=3 為例說明,其他 i=0, i=1, i=2, i=4... ,也一樣。
--
When I saw the turth of love,
I feel the pain which the world brings to me.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.78.41
推 firejox:T大寫的好詳細(worship) 08/18 22:27
推 shile775:太佩服了,給T大讚一個!! 08/18 22:52
→ Zephyr750:(3)(4)要倒過來吧? 08/18 23:11
→ Zephyr750:唷!下面有講順序(還以為順序等於數字順序) 08/18 23:12