Private Sub Form_Click()
j = 10
For i = 1 To j
    i = i + 2
    j = j - i
Next i
Print i
Print j
End Sub
编译后输出i=13,j=-20
能不能帮我解释为什么j=-20
是怎么得来到的

解决方案 »

  1.   

    我把原代码加上中间的输出:
    Private Sub Command1_Click()
    Dim i As Integer
    Dim j As Integer
    j = 10
    For i = 1 To j
    i = i + 2
    j = j - i
    Print i & "," & j
    Next i
    Print i
    Print j
    End Sub
    得到的结果:3,7
    6,1
    9,-8
    12,-20
     13
     -20这就看得很明白了,
    程序第一次运行了 for i=1 to j 时,已经把j编译成10(不是变量)了,以后的每次循环,都是把i与10作比较,而不是与变量j作比较。
      

  2.   

    i=3
    j=7
    i=6
    j=1
    i=9
    j=-8
    i=12
    j=-20Final:
    i=13j=-20
    程序只循环了三次
      

  3.   

    第一次 i=3 j=7
    2 i=6 j=1
    3 i=9 j=-8
    4 i=12 j=-20