标签:lse png 输出 做了 image highlight color als sub
今天在做一道题时,学生在写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 ,在循环开始时,编译器就将循环的初值和终值同时计算好了,计算的时候终值是不会马上用到初值的。
标签:lse png 输出 做了 image highlight color als sub
原文地址:https://www.cnblogs.com/daveylin/p/9138743.html