VB循环For的一点启示

Posted daveylin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB循环For的一点启示相关的知识,希望对你有一定的参考价值。

今天在做一道题时,学生在写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 ,在循环开始时,编译器就将循环的初值和终值同时计算好了,计算的时候终值是不会马上用到初值的。

 

以上是关于VB循环For的一点启示的主要内容,如果未能解决你的问题,请参考以下文章

为啥将 VB.NET 代码迁移到 C# 时,for 循环的行为会有所不同?

在vb中 啥是循环语句 啥意思

vb中的循环语句

vba for循环

谁能教我VB for循环的嵌套怎么算

vb怎么退出循环????