先看这几句执行时的作用:
(1)s = 0,给s设初值0
(2)For i = 1 To 5,第一次执行这一句时,对i设初值1,以后每次执行这一句时都判断i的值是否介于初值和终值之间,也就是在1和5之间,如果在这个范围之内,就执行下一句,如果超出这个范围,就去执行next i后面的那一句了。——楼主所提的问题,这一句话是第一个重点,请仔细理解。
(3)s = s + i,把s和i相加,再把和赋值给s
(4)Next i,执行这一句时,把i的值加上步长,在本例中,就是加1,再把值给i,相当于执行了i=i+1,再返回for i=1 to 5那一句去执行。——楼主所提的问题,这一句话是第二个重点,请仔细理解。
(5)Print s, i,这一句是打印s和i的值,当程序执行到这一句时,i的值一定是6了,因为等于5时还跳不出这循环体呢!
问题补充:Private Sub Command1_Click()
For i = 1 To 3 Step 2
Print "VB"
Next i
End Sub
为什么“vb”的执行次数为2次 step为2 不是直接1跳到3吗
补充答复:
楼主说的对啊,确实是直接从1跳到3,但是3仍然符合进入循环的条件,所是要Print 两次"VB"啊!!
-------------------------------------
Private Sub Command1_Click()
Dim x As Integer
Dim n As Integer
x = 1
n = 0
Do While x < 20
n = n + 1
x = x * 3
Loop
Text1.Text = Str(x)
Text2.Text = Str(n)
End Sub
为什么n=3 是怎么计算出来的??
再补充答复:
看执行do.....loop之间的语句几次就可以了
第一次,n=n+1=0+1=1,x=x*3=1*3=3
第二次,n=n+1=1+1=2,x=x*3=3*3=9
第三次,n=n+1=2+1=3,x=x*3=9*3=27
第四次,进入时,判断 x < 20已经不成立(已经=27了!),所以不能进入,循环结束,最终结果是n=3,x=27
如果没有其他条件使循环变量的值发生变化,当第一次循环条件满足时,step为0将造成死循环,当第一次循环条件不满足时,step为0不循环
for
循环
是定长循环
.
在循环开始后
把step
值加到
循环计数器
(i)
里。并不会动态改变step。
step
的值
可以是正数,负数,或0
.为0时,就会无限循环.
如果你要动态改变step
你就要用do
或
while
循环实现。
使用下面的语句测试,说明它应该是无限循环的。
Private Sub Command1_Click()
For i = 2 To 4 Step 0 ‘这句换为For i = 2 To 2 Step 0也行)
j = j + 1
Debug.Print j
If j > 10 Then Exit Sub
Next i
End Sub