以下内容节选自“VFP学习、开发漫谈(11)”:
对于“FOR i = 1 to n”这样的循环,需要注意的是:若变量的终止值是一个变量 n,则不要试图在循环内通过修改 n 的值,来达到改变循环次数的目的。这样做的结果是:n 的值确实改变了,但循环次数未变。
我们本来试图通过在循环体内将 n 改为 1 使其仅循环一次,但实际情况却是循环仍然执行了三次。这是因为在执行循环前,系统就将变量转换成了常量,从而确定了循环次数。
若将上例改为“DO WHILE”结构,则情况大为不同:
运行结果表明,循环仅执行了一次。与 FOR 循环不同,DO WHILE 每执行一次循环,系统都要重新计算一次表达式的值,包括其中的变量。因此在循环体内更改变量值对循环次数有影响。
再看一个实例,将上述代码中的变量 n 改为宏替换:
运行结果表明,循环又执行了三次。因为在循环开始时,系统通过宏替换将命令转换成了“DO WHILE i <= 3”,在循环体内改变变量的值对循环次数无影响。
再看下面一个例子,将上述代码修改如下:
运行结果表明,循环仅执行了一次。因为循环开始时,宏替换将命令转换成了“DO WHILE i <= n”。
上述几个例子虽然简单,但其中的细微差别却导致了循环行为有很大的不同,需要用户细细品味,举一反三。