看看这段程序应该运行几遍?
private sub command1_click()
dim i, j as integer
j = 1
for i = 1 to j
msgbox "hello"
i = 0
j = 0
next
end sub
如果next是先加1再判断是否执行,上面得就应该一遍。如果next是先判断是否执行再加1,上面的就是2遍,可是我记得next应该是先加1在判断是否执行,那上边的就应该是一遍,可实际结果是2遍。不知原因。
推荐阅读
这样写根本就是一个死循环,为什么呢
j=1
for i = 1 to j
msgbox "hello"
i = 0
j = 0
next
在这段代码中i是循环变量,next是先加1再判断这是对的,但是这时候i是和谁比较了,不是你想象中j,而是1。for i = 1 to j 语句执行后,循环的终止条件就确定为i大于1时。看下面代码
j=5
for i = 1 to j
msgbox "hello"
j = 0
next
这个循环会执行5次,而不是1次
private sub command1_click()
dim i, j as integer
j = 1
for i = 1 to j
msgbox "hello"
i = 0 <------------next之后会=1
j = 0 <-----next之后会=0
next
end sub
--------------------------------------
private sub command1_click()
dim i, j as integer
j = 1
for i = 1 to j <-------如果i>j,也就是说,在这里,1>0的时候,不会跳出吗?我没运行环境,各位试一下...
msgbox "hello"
i = 0
j = 0
next
end sub
真的是死循环吗??????????
private sub command1_click()
dim i, j as integer
j = 1
for i = 1 to j /在这里, 是i与j来比较,在循环了一次并 next 后,i=1.而j = 0.
/这时i 与j 再相比一次,这时,1>0,故第二次会跳出,应该只循环一次的
msgbox "hello"
i = 0
j = 0
next
end sub
来晚了
for i = 1 to j 开始这里解释得到i=1 to 1
msg: msgbox "hello"
i = 0
j = 0 这句对循环没有影响
next 这里判断i+1=1 跳至msg:反复
对循环
for i=1 to j
next
如果里边不指定i的值,那么无论是否指定j的值,都是按开始的j的值,该循环几次就循环几次,但是如果指定了i的值,如果指定的i的值小于以前的j值,那么就是死循环,如果指定的i值大于开始的j值,那么就会跳出循环----
循环的初值和终值均不受循环内部代码改变初始设置的初值变量和终值变量所影响。
但是循环变量允许受到循环内部代码的控制。
因此,这段程序是死循环。i=<1均不会出循环。
在循环中修改j并不能改变循环的to值1。所以楼主所希望的循环变量0与to值0比较的情况不会出现。而由于i=0<1,所以成为死循环。
.

讨论区