2012-12-12 47 views
2

我有一個簡單的for循環在C++和初始化語句是:C++ for循環初始化計數器錯誤

對(INT N = 0; N <這 - > fileLines.size(); N ++) {

由於一些瘋狂的原因,n的值被設置爲0而不是249758,這導致for循環評估錯誤。

任何想法,爲什麼這是初始化錯誤(即不是0)?

enter image description here

+0

您是在調試模式還是釋放模式?當您通過優化查看變量值時,保留髮布模式無法爲您提供正確的值。 – tletnes

+1

看起來你已經在'n'初始化之前停下來了。如果你通過一條指令前進,會發生什麼? –

回答

6

我認爲你需要驗證後的for循環什麼n的值是,我沒有看到任何方式,這可能非0。檢查開關開始時的值。實際設置n之前,您的斷點可能已經中斷。

+2

同意。屏幕截圖顯示'n = 0;'行即將執行,但尚未執行。 –

+0

開關從不執行......如果您在開關中放置斷點,則永遠不會觸發它。循環從不發生,因爲n> size() – eb80

+0

this-> fileLines.size()的值是什麼? – jeremy

0

你試過堅持

std::cerr<<n<<std::endl; 

for環的內部?這似乎是在程序運行過程中觀察價值的一種更直接的方式,以驗證它是否在按照您的想法進行操作,並且優化不會給您輸出帶來問題。

也許你的程序是多線程的,有人不恰當地寫入該內存位置?