簡體   English   中英

C#-infinite for循環

[英]C# -infinite for loop

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);
}

你好。 我正在嘗試調試此代碼,但我無法。

任何人都可以解釋為什么這會導致無限循環?

這是因為你從零開始i ; 無論你加倍多少次,它都會保持為零:)

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

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

如果你在這種情況下做到了這一點,你會注意到i永遠保持0並且可能得出結論問題的根本原因是什么。

原因是你的條件是我

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM