VFP 关于EXIT 的问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 00:26:46
程序1:
MN="1234567890"
DO WHILE .T.
?RIGHT(MN,1)+MN
EXIT
MN=MN+2
ENDDO
RETURN
程序2:
C=2
S=1
DO WHILE .T.
DO case
CASE C<3
C=C+1
CASE C<5
C=C+2
OTHERWISE
C=C+3
ENDCASE
IF C>=8
EXIT
ENDIF
S=S+C
ENDDO
? S
RETURN

我想问下,程序1和程序2中的 EXIT 有什么区别呢?为什么程序2 中的直接跳到后面的 S=S+C ?
谢谢~~!

没有区别,两个EXIT都是退出FOR循环,不会退出IF条件语句,EXIT只能用于FOR循环。
我运行了一下程序2,结果为:9
我们来分析一下程序的运行
C=2
S=1 第一次循环 第二次 第三次
DO WHILE .T.
DO case
CASE C<3 C<3成立 C<3不成立 C<3不成立
C=C+1 C=3
CASE C<5 C<5成立 C<5不成立
C=C+2 C=5
OTHERWISE
C=C+3 C=8
ENDCASE
IF C>=8 C>=8不成立 C>=8不成立 C>=8成立
EXIT 执行EXIT退出FOR循环
ENDIF
S=S+C S=4下一次循环 S=9下一次循环
ENDDO
? S
RETURN
最后显示结果:
9

楼上搞得太复杂了,简单明了点:
exit 是在循环体内出现,当执行exit,程序跳出循环,执行ENDDO或ENDSCAN或ENDFOR后面的语句。程序1、2的EXIT没有区别,都是执行ENDDO后面的语句。
第1次循环 c=3 s=4
第2次循环 c=5 s=9
第3次循环 c=8 s=9(可以看出,并没有执行S=S+C,跳出循环执行?S)

楼上 liu6233229 的解释方法不错哦