2012-12-22 145 views
2
private void button1_Click(object sender, EventArgs e) 
{ 
    int j, counter=0; 
    j = 2; 
    for (int i = 0; i < 100; i=i*2) 
    { 
     j = j - i; 
     while (j<25) 
     { 
      j = j + 5; 
      counter++; 
     } 
    } 
    MessageBox.Show("Test" + counter); 
} 

嗨。我正在嘗試調試此代碼,但無法執行此操作。C# - 無限循環

任何人都可以請解釋爲什麼這會導致無限循環?

+16

這是因爲0 * 2 = 0 –

+3

瞭解如何使用環境的調試器。這將在未來證明是非常寶貴的。 –

回答

2

的原因是你的條件我

for (int i = 0; i < 100; i=i*2) 

在第一循環中,i = 0,0 * 2 = 0,所以我保持爲0,直到永遠。

6

這是因爲您在012處開始i;不管你有多少倍零,它將保持爲零:)

for (int i = 1; i < 100; i=i*2) { 
    j = j - i; 
    while (j<25) { 
     j = j + 5; 
     counter++; 
    } 
} 
6

其他人已經解釋了直接原因。讓我給你提供一個「算法」來搜索這些類型的問題,以便你可以在將來自己解決它們:在調試器中使用「Locals」或「Autos」或「Watch」甚至「Immediate」面板檢查變量的值。您也可以將鼠標箭頭放在變量上,彈出的提示將允許您查看當前的變量值。

如果你在這種情況下做到了這一點,你會發現i永遠處於0狀態,並且可能會得出關於問題根本原因的結論。