作者tropical72 (藍影)
看板C_and_CPP
標題Re: [問題] for迴圈的小問題...。
時間Thu Oct 28 22:17:16 2010
應該是你對 for loop 的特性沒有很熟的認識
for( (1)初始值設定; (2)判斷條件; (3)遞增值)
{
(4) 述敘;
}
而 loop 的動作順序是
(1) -> 只跑一次
(2) -> 如果 (2) 成立的話就跑 (4), (3)
(4) -> (2) 成立的話才執行
(3) -> (2) 成立的話才執行
(2) (4) (3). (2) (4) (3)....
一直跑到 (2) 不成立為止
: int i = 0;
: for(i; (2) i<3;
(3) ++i)
(4) std::cout<<i<<"\n";
為了說明清楚,我小小的改了一下上述東西
以你的例子來看,一開始 i 設為0
進入 loop 之後,
第一次進入 loop 時
會執行一次 (1), 但是 (1) 其實有寫跟沒寫一樣,
通常會在這裡寫成 i=0, 將 i 設初值。
i=0 => for(i;
(2) i<3;
(3) ++i)
(4) std::cout<<i<<"\n";
0 < 3 , (2) 成立,
執行 (4) -> 輸出 0
執行 (3) -> ++i, 原本i=0, 變成 i=1,
第二次進入 loop 時
i=1 => for(i;
(2) i<3;
(3) ++i)
(4) std::cout<<i<<"\n";
1
< 3 , (2) 成立,
執行 (4) -> 輸出 1
執行 (3) -> ++i, 原本i=1
, 變成 i=2
,
第三次進入 loop 時
i=2
=> for(i;
(2) i<3;
(3) ++i)
(4) std::cout<<i<<"\n";
2
< 3 , (2) 成立,
執行 (4) -> 輸出 2
執行 (3) -> ++i, 原本i=2
, 變成 i=3
,
X\
第四次進入 loop 時
i=3
=> for(i;
(2) i<3;
(3) ++i)
(4) std::cout<<i<<"\n";
3 < 3 , (2) 不成立, 不執行 (3) (4) 直接跳出回圈
於是你在 loop 裡面時,會輸出 0 1 2
但最後使得 loop 跳出的條件,會是 i=3,
所以你在 loop 外面再輸出i值,會得到3
上述只是一種應用
建議熟悉 for loop 特性為佳
---
感謝 purpose 指正.
---
※ 編輯: tropical72 來自: 180.177.76.142 (10/28 22:31)
→ tropical72:= = , 抱歉 p 大,推文不小心被我砍了,有得救嗎 = = 10/28 22:32
→ diabloevagto:第三次應該輸出2 10/28 22:35
→ tropical72:嗯,的確筆誤,樓上好眼力 10/28 22:36
※ 編輯: tropical72 來自: 180.177.76.142 (10/28 22:37)
※ 編輯: tropical72 來自: 180.177.76.142 (10/28 22:38)