Board logo

標題: [發問] for 迴圈 最後結果 [打印本頁]

作者: li_hsien    時間: 2014-3-8 22:29     標題: for 迴圈 最後結果

請問一下各位大大

小弟有個迴圈的邏輯不太懂
  1. Sub test()

  2.     Dim sum As Integer
  3.     Dim i As Integer
  4.    
  5.         sum = 0

  6.         For i = 1 To 5
  7.             sum = sum + 1
  8.             Debug.Print i
  9.         Next
  10.         Debug.Print i

  11. End Sub
複製代碼
最後印出i是6

可是for 迴圈i不是跑到5而已嗎???

為什麼最後會是印出6呀???


麻煩幫小弟解解惑  感謝  :  )
作者: Hsieh    時間: 2014-3-8 22:44

回復 1# li_hsien

迴圈的作用是變數以等差值(step)方式順序增減
當遇到next就會將變數加上step值
當變數值達到迴圈結束條件就跳出迴圈
所以當i=5時還沒到達跳出迴圈
但是執行到下一行next時,因為加入step值1成為6
已經超出迴圈最大值,就結束迴圈,此時的值當然是要超出迴圈值。
作者: li_hsien    時間: 2014-3-10 08:18

回復 2# Hsieh

我以為是像字面上一樣就跑1~5

所以這跟Do While的想法差不多囉???

沒設定等差多少?

就step就直接為1的意思吧?


感謝大大解惑  一整個釐清了一個點
作者: Hsieh    時間: 2014-3-10 08:43

回復 3# li_hsien


    do.. loop也是迴圈
只是for....next的迴圈出口已經被指定
就算迴圈當中沒有出現符合的條件
當迴圈執行完最後一次,就自動跳出迴圈
do....loop則不同,指定迴圈初始值後
會依據指定的條件決定是否繼續
當運算過程中沒有達到退出迴圈的條件就會繼續累加
造成無窮迴圈,導致運算無法終止
作者: li_hsien    時間: 2014-3-10 10:29

回復 4# Hsieh

謝謝板大的解釋

我一開始只以為他就跑1~5

原來他還是會累加到6,但因為for只到5,所以不繼續迴圈因而停止了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)