2016-02-07 83 views
1

有人可以向我解釋爲什麼輸出如下?瞭解循環輸出

爲什麼循環第二次運行後(int i)的值爲9,不小於5?

看來,即使(int i)大於5,它仍然會增加另一個3,但身體不會再次運行。爲什麼?

#include <iostream> 
using namespace std; 

int i=0; 

int main() 
{ 
for(;i<5;i+=3){ 
i=i*i; 
} 
cout << i << endl; 

//Output: 12(i) 
+0

第二次是*當它變成9時。 –

+0

每當它變成9時爲什麼身體不會跑?(剛剛得到9 + 3?) – WhyteSeal

回答

2

它的工作原理是這樣,或多或少:

i = 0 
i < 5 ? yes, keep on 
i*i = 0 
i+=3 => i ==3 now 
i < 5 ? yes, keep on 
i*i = 9 
i+=3 => i is 12 now 
i < 5 ? no, exit loop 

你寫一個for(initialization; condition; excuteAtTheEndOfCycle)initialization一開始只執行一次,condition在每個週期之前評估,excuteAtTheEndOfCyclei+=3,在您的情況),它在每個週期結束時執行,然後再進一步評估condition

+0

謝謝!我會很快將它標記爲正確的。在此之前,我不知道只有在添加之後才檢查了這個情況。 – WhyteSeal

0

它沒有運行,因爲您正在給condi循環的次數小於五, 你想要什麼,那輸出將是?

+0

如上所述//輸出:12(i)!但我已經得到了我的答案。不管怎麼說,還是要謝謝你! – WhyteSeal