ASP的for循环显示问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 11:52:29
<%
dim a
for a=1 to 100-1
Response.Write(a&"<br>")
next
%>

这个结果显示的最后a=99

<%
dim a
for a=1 to 100-1
next
Response.Write(a&"<br>")
%>
这个显示的是100,为什么会有2种不同的值?最后的值不都应该是99吗?

不是的。其实for循环如果不设置它的步进step,那么就是默认的每循环一次就给变量加1。相当于js中 for(i=0; i<=100-1; i++) 。只不过 i++ 没有给出来吧。
比如上面 a=1,那么打印出a的值为1.然后a就加1,和(100-1)比较,如果小于等于(100-1),就继续执行循环体内的代码,这时就打印a的值2,如此继续下去。当在最后,打印完a为99的时候,a在加1,注意这时a的值是100,和(100-1)比较,显然大于(100-1)。所以循环体内的代码不执行。但继续执行循环体 for next后面的代码,这时当然会打印a的值100了。

如将第一个代码最后next后添加 Response.Write(a&">>><br>") ,你会发现打印出的是100.

这儿for有个步进就是每次循环后a加多少的问题,如
dim a
for a=1 to 100-1 step 10
Response.Write(a&"<br>")
next
%>

它就会每循环次a+10,打印如下
1
11
21
31
41
51
61
71
81
91

呵呵,这是一个for与next组成循环的常识,

1. 因为第一个构成了循环语句,所以在a从1到99时都在循环输出,
a在执行到99时是最后一句,故最后输出为99,而next过后,a为100超出for的范围,故而不继续执行,也就输出不了了

2.第二个则构成一个空循环,没有值输出,只有最后一个语句打印出a的值,在循环到a=99时,空循环完成,这时next语句把a变成了100,终于跳出循环,这时轮到输出语句,只输出一个100,即当前a的值

你怎么不把两个程序合起来看呢,你在你的第一个程序的next之后输出a,你会发现结果也是100。

for循环就是这样的,需循环体里