2015-10-20 49 views
0

我想填補與121個的整數int數組,從0到120之間有什麼區別:用於循環條件內循環執行,C++

  1. for(int i = 0; i < 122; arr[i] = i, i++){}
  2. for(int i = 0; i < 122; i++){arr[i] = i;}

我檢查和除warning: iteration 121u invokes undefined behavior,我認爲這是不相關的我的問題,代碼編譯罰款,並得到了預期的效果

編輯:感謝所有誰注意到了可讀性問題,這是真的當然,但我的意思是,以查看是否存在用於這些2行有不同的解釋,所以我檢查這兩個行的在C組件和它們看起來相同

+0

你可以把ARR聲明? –

+0

可讀性和可維護性是編程的一個重要方面。你認爲哪一個更容易閱讀和理解(因此更容易維護)? –

回答

1

沒有,結果將是相同的。 第一個構造使用逗號運算符;右側前逗號操作者的左側進行測序,因此arr[i] = i, i++被良好定義

第二個是更容易閱讀,但是,特別是如果一個人選擇省略{}完全:

for(int i = 0; i < 122; arr[i] = i, i++); //this ; is evil, don't write such code. 

另外,如果你想填充120個元素,你應該使用i < 120

1

最終的結果從兩個線將是相同的。然而,第二個更好,因爲第一個犧牲可讀性而沒有收益。

當人們通過閱讀代碼,他們希望for循環是在你寫在第二行的方式。如果我正在遍歷代碼並遇到第一行,我會停下來看一看爲什麼一個空的for循環正在運行,然後會意識到您正在使用for循環自身設置變量逗號運算符。在閱讀代碼時打破流程,所以不會推薦它。