2015-08-21 80 views
0

風格之一:for (int i=0;i<10000;++i){...}for循環在C++中,這兩種風格有什麼區別?

風格二:for (int i=0;i!=10000;++i){...}

比方說,在{}會發生什麼,不會影響i價值,就是這兩種風格之間的區別?因爲我已經檢查過編譯器,它們都得到相同的結果。

+7

第一個是「更安全」,因爲它將繼續工作增量超過1(例如,如果我從9999到10 002) – Borgleader

+0

只要想想兩個循環的行爲,如果該塊只包含「我= 10001;'沒有別的。 –

+0

actully我更關心效率部分,哪一個更快,而我們有很多迭代次數? – memmove

回答

4

鑑於這個特定的問題,沒有區別。但是,一般來說,首選款式是首選,因爲它比較安全。

想想如果i變成類似10,001會發生什麼?在第一種風格中,循環將終止。而在第二種風格中,你會遇到無限循環。

如果你堅持第一種風格,你也可以通過任何不是10000的因子來增加i,並且仍然保證循環的終止。

+1

您的意思是'潛力無限循環',因爲一旦你溢出'int',你可能再次達到10000。如果循環處理內存,在達到溢出之前可能會出現分段錯誤。 –

0

在這種情況下沒有區別。常用的'<'嘆息只是爲了安全目的。如果你使用float而不是int,或者i的值在循環內部被修改,所以它可以跳過檢查它的值。 作爲默認選擇,在'!='之上選擇'<',除非真正需要像指針比較那樣的'!='。

+1

我會懷疑一個使用float作爲迭代值的for循環。 – Borgleader

+0

我也是,但這是可能的。 –

0

如果您還在循環內部操縱i,則在任何時間點有第二種風格的i可能不等於10000,並且可能會變成無限循環。

即使在第一種方式下,即使i的值在任何條件的循環內遞增,循環肯定會在某個時間點終止。

編輯:即使i的值在循環內部不會被修改,並且如果您認爲這些只是兩種做同樣事情的方法,作爲程序員,您必須選擇第一種樣式,因爲它有意義,可讀性並且由於顯而易見的原因稍微安全。

相關問題