1. 程式人生 > >VB循環For的一點啟示

VB循環For的一點啟示

clas mman ext 我們 學生 alt () com ger

今天在做一道題時,學生在寫For上邊界時,用了iMin

iMax = i: iMin = n - i + 1
For j = i To __________
  If score(j) > score(iMax) Then iMax = j
  If score(j) < score(iMin) Then iMin = j
Next j

 一開始我認為是錯的,因為iMin隨著循環的進行會變化。

但答案卻是這個。

為此做了個驗證。如下程序,

Private Sub Command1_Click()
  Dim i As Integer
  For i = 1 To 3 - i
    Print i
  Next i
End Sub

 思考:該程序循環了幾次?一般會認為循環了1次。

一般分析會是這樣的:

初值i=1

終值3-i=2

第1次循環,輸出1,接著i=i+1=2,終值3-i=3-2=1,

2<1為False。

但實際運行結果是:

技術分享圖片

思考,從程序結果來分析,終值3-i應該一開始就賦值了,並且作為了常量。

但是3-i=3-1=2,應該循環2次啊。

我們在做一個實驗,如下代碼:

Private Sub Command1_Click()
  Dim i As Integer
  i = 1
  For i = 1 To 3 - i
    Print i
  Next i
End Sub

技術分享圖片

從運行結果來看,在for循環外面現將i初始化為1後,3-i=3-1=2,

而拿掉i的初始化語句後,就變成循環3次。

原因分析如下:

1、dim i as integer定義了i變量,它的初值即為i=0;

2、for i=1 to 3-i ,在循環開始時,編譯器就將循環的初值和終值同時計算好了,計算的時候終值是不會馬上用到初值的。

VB循環For的一點啟示