0
一直在環顧一些C++,並在幾個類中注意到這一點,intellisense顯然拋出了一個錯誤,但此代碼以前的工作。不要求修復只是詢問它會如何工作。繼承我的循環
for(int i = 0; i < PACKAGE_MAX; i++)
m_Package.push_back(&m_PrePackage[i]);
for(i = 0; i < PACKAGEPAIR_MAX; i++)
m_PackagePair.push_back(&m_PrePackagePair[i]);
沒有他們嵌套下一個聲明進行宣佈的i。這繼續了幾個for循環。這是一箇舊的.net方法嗎?
當然,即使想要在i = 0時啓動,它最終會在循環語句的最後從0跳到6,對於第2個循環也是2跳。但這只是我閱讀一些舊的來源。
我不知道我理解正確的問題,但這些循環沒有身體周圍的括號,所以身體只有一行(縮進的一個)。換句話說,程序首先完全運行第一個循環,然後將'i'設置爲零並完全運行第二個循環,依此類推。 – jkiiski
變量'i'可能在與這兩個循環相同的範圍內聲明。第一個循環在其範圍內重新聲明'i'是不好的做法,但是合法。 – Archimaredes
我不確定我是否也理解了這個問題。但是如果你想知道爲什麼可以在第二個循環中重用在第一個中聲明的變量,那麼可以使用[Visual Studio擴展](https://msdn.microsoft.com/en-us/library/84wcsx8x.aspx)來執行該操作,但C++標準聲明它不應該編譯。 – BlackDwarf