當我編譯並運行代碼counter++
或++counter
代替x
時,輸出是相同的;在這兩種情況下,數字1 - 10:在for循環中,根據迭代的總數量,前/後遞增循環控制變量是否有區別?
for (int counter = 1; counter < 11; x)
{
std::cout << counter << endl;
}
原本我以爲++counter
會加1,然後返回前新值在環頭布爾表達式進行了評價。即當從counter = 1
開始並使用++counter
時,counter
在布爾表達式中將具有值2。這似乎不是這種情況,因爲兩個輸出都是相同的,而不是像我預期的那樣迭代次數少一點的++counter
版本。
四處閱讀,它看起來++counter
和counter++
分別增加counter
1循環體的開始或結束。在這種情況下,至少在概念上,這不是一個相同的行爲?因爲循環結束和循環的開始在循環經過第一次迭代時是相同的。
我唯一能看到這個有所作爲的時間是在第一次迭代中,如果使用counter++
(因爲在循環結束處將1添加到計數器中),std::cout << counter << endl;
應該將1輸出到控制檯。如果使用++counter
(因爲在循環開始時計數器加1),std::cout << counter << endl;
應該輸出2給控制檯。
除了上面的問題,您能否精確地解釋在for循環頭文件中評估三個動作的順序,並且在使用i++
和++i
時準確解釋迭代發生的位置。
非常感謝!
簡而言之:沒有,沒有對迭代次數任何區別。 – 2015-02-08 10:12:17
請參閱[** for loop **](http://en.cppreference.com/w/cpp/language/for)。 – juanchopanza 2015-02-08 10:15:08
在循環的那個地方,它們是等效的。另外請注意,編譯器幾乎可以肯定地在後續增量中交換該地點的預增量,至少在啓用優化時。 – stj 2015-02-08 15:41:14