我想知道爲什麼這個循環在VB.NET中不顯示任何東西。For Loop Step -1
我認爲這段代碼會創建一個無限循環。但它沒有顯示任何東西。
Dim i as Integer
For i = 1 to 3 Step - 1
MessageBox.Show(i)
Next
是否與此代碼(在java/c#中)有所不同?
for(int i = 1;i <= 3;i--)
{
// print i
}
我想知道爲什麼這個循環在VB.NET中不顯示任何東西。For Loop Step -1
我認爲這段代碼會創建一個無限循環。但它沒有顯示任何東西。
Dim i as Integer
For i = 1 to 3 Step - 1
MessageBox.Show(i)
Next
是否與此代碼(在java/c#中)有所不同?
for(int i = 1;i <= 3;i--)
{
// print i
}
http://msdn.microsoft.com/en-us/library/5z06z1kb.aspx 對於否定的步長,如果計數器> =端,環只執行。所以在這種情況下,i = 1,即小於結束值,因此循環根本不執行。
它不會顯示任何內容,因爲您正在向後運行計數器而不反轉開始和結束條件。
這樣想着循環:
Dim counter As Int32 = 1
Do
If counter <= 1 Then
Exit Do
End If
Console.WriteLine("The counter is at " & counter)
counter +=1
Loop
顯然,這將無法正常工作。 你需要扭轉的開始和結束的條件:
For counter = 3 To 1 Step -1
Console.WriteLine("counter: " & counter)
Next
是的,如果我反轉開始和結束條件它將工作。但我好奇爲什麼這個循環不會產生無限循環? –
我向你展示了代碼第一位的原因。 –
For i = 1 to 3 Step - 1
它不會產生無限循環。循環將被簡單地跳過,因爲無法從1到3以及步長值-1。
是否與此代碼(在java/c#中)有所不同?
由於初始值(i = 1
)符合退出條件(i <= 3
),此循環也將立即結束。
'這個循環也會立即結束,',你的意思是第二個循環不打印任何東西? –
正確。循環被跳過,因爲它的出口條件在迭代一次之前就滿足了。 – computerfreaker
謝謝,那個鏈接給我解釋。 –