while迴圈和for迴圈的區別釀成的Bug

2021-09-06 05:33:31 字數 1071 閱讀 3359

由於我的粗心大意,犯了個不該犯的錯誤,幸好經過除錯找到了bug。

大夥都了解:for迴圈一般在

for(;;這裡)

寫那個疊加變數(迭代器)的。而while迴圈一般在

while()

這裡;

寫疊加變數的。我犯的錯誤就是for迴圈在兩個地方都寫了疊加變數,結果***。

1

void func(void)2

1011

for (vector::iterator it =m_ptreasures.begin();

12 it != m_ptreasures.end(); it++)

1316 }

大家也許也一眼看到了錯誤所在,大家看到第12行和第14行。兩個地方都用了it++,這不就是it+=2了嗎?對啊,我犯這個錯誤時由於下面的寫的時候是copy上面的while迴圈的。這下好了,忘記刪除it++了。結果導致了嚴重的錯誤。當時除錯到這裡時我還沒發現有兩個it++(鬱悶吧!^-^)。改正後的**:

1

void func(void)2

1011

for (vector::iterator it =m_ptreasures.begin();

12 it != m_ptreasures.end(); it++)

1316 }

我開始是這樣改的:

1

void func(void)2

1011

for (int i=0; i<10; i++)

1215 }

我沒發現有兩個it++,我這樣修改後程式正常執行。我就以為是vs對stl支援的問題了(這種想法都有了,上吊吧我)。我想了想,其他地方也有上面的迭代器的for迴圈啊,也沒錯啊。所以我在仔細看看**。結果就找到了兩個it++。再然後就修改好了。再然後就沒有然後了。程式就結束了。

<1> 給自己乙個警醒,不要犯同樣的錯誤

<2> 給看這篇文章的網友們乙個建議

」)

for迴圈和while迴圈

while迴圈 語法 while 判斷條件 迴圈體 計算 1 2 3 4 100 n 1 res 0 while n 100 res n n 1 print res 5050while迴圈之else 語法 while 判斷條件 迴圈體else 語句塊for迴圈 for x in 序列 迴圈體rang...

迴圈語句 while迴圈和for迴圈

迴圈語句 讓一部分 迴圈的執行下去,反覆執行 1 while迴圈語句 迴圈語句的格式 while 迴圈條件 迴圈條件必修是布林型別,當條件的結果是ture時,執行迴圈體,執行完迴圈體後,再接著進入條件的判定,直到條件的結果是false,迴圈體不執行,整個迴圈語句結束。public class whi...

迴圈結構和while 和do while的區別

概念 迴圈結構可以看成是乙個條件判斷語句和乙個向回轉向語句的組合。另外,迴圈結構的三個要素 迴圈變數 迴圈體和迴圈終止條件.迴圈結構在程式框圖中是利用判斷框來表示,判斷框內寫上條件,兩個出口分別對應著條件成立和條件不成立時所執行的不同指令,其中乙個要指向迴圈體,然後再從迴圈體回到判斷框的入口處.c語...