風格之一:for (int i=0;i<10000;++i){...}
for循環在C++中,這兩種風格有什麼區別?
風格二:for (int i=0;i!=10000;++i){...}
比方說,在{}
會發生什麼,不會影響i
價值,就是這兩種風格之間的區別?因爲我已經檢查過編譯器,它們都得到相同的結果。
風格之一:for (int i=0;i<10000;++i){...}
for循環在C++中,這兩種風格有什麼區別?
風格二:for (int i=0;i!=10000;++i){...}
比方說,在{}
會發生什麼,不會影響i
價值,就是這兩種風格之間的區別?因爲我已經檢查過編譯器,它們都得到相同的結果。
鑑於這個特定的問題,沒有區別。但是,一般來說,首選款式是首選,因爲它比較安全。
想想如果i
變成類似10,001會發生什麼?在第一種風格中,循環將終止。而在第二種風格中,你會遇到無限循環。
如果你堅持第一種風格,你也可以通過任何不是10000的因子來增加i
,並且仍然保證循環的終止。
您的意思是'潛力無限循環',因爲一旦你溢出'int',你可能再次達到10000。如果循環處理內存,在達到溢出之前可能會出現分段錯誤。 –
在這種情況下沒有區別。常用的'<'嘆息只是爲了安全目的。如果你使用float
而不是int
,或者i
的值在循環內部被修改,所以它可以跳過檢查它的值。 作爲默認選擇,在'!='之上選擇'<',除非真正需要像指針比較那樣的'!='。
我會懷疑一個使用float作爲迭代值的for循環。 – Borgleader
我也是,但這是可能的。 –
如果您還在循環內部操縱i
,則在任何時間點有第二種風格的i
可能不等於10000
,並且可能會變成無限循環。
即使在第一種方式下,即使i
的值在任何條件的循環內遞增,循環肯定會在某個時間點終止。
編輯:即使i
的值在循環內部不會被修改,並且如果您認爲這些只是兩種做同樣事情的方法,作爲程序員,您必須選擇第一種樣式,因爲它有意義,可讀性並且由於顯而易見的原因稍微安全。
第一個是「更安全」,因爲它將繼續工作增量超過1(例如,如果我從9999到10 002) – Borgleader
只要想想兩個循環的行爲,如果該塊只包含「我= 10001;'沒有別的。 –
actully我更關心效率部分,哪一個更快,而我們有很多迭代次數? – memmove