帮忙解释一下这道VFP过程调用题

来源:百度知道 编辑:UC知道 时间:2024/06/05 20:33:42
STORE 10 TO X,Y
DO SUB1
??X,STR(Y,4)
CANCE
PROC SUB1
Z=X+2*Y
X=X+10
ENDP
DO SUB2
??Z
PROC SUB2
PRIVATE Z
Y=Y+30
PROC
详细解释一下过程调用啊,谢谢

这是什么破程序,乱七八糟的。
题目的关键:上级模块中建立的内存变量及其所赋的值,在被调用的下级模块中仍有效(即:VFP中的局部变量向下透明)。明白这个,这个题目就很好理解了。

STORE 10 TO X,Y &&把10赋给x,y
DO SUB1 &&执行过程sub1,x的值在sub1中得到修改变成了20,y不变
??X,STR(Y,4) &&输出结果20 10
CANCE &&结束当前 Visual FoxPro 程序的执行。

PROC SUB1
Z=X+2*Y &&x,y的值来源于上级模块,Z为本模块的局部变量=30
X=X+10 &&x=10+10=20,得到改变
ENDProc

DO SUB2 &&没有被执行
??Z

PROC SUB2 &&也用不着
PRIVATE Z
Y=Y+30
ENDPROC

如果修改一下:
STORE 10 TO X,Y &&把10赋给x,y
DO SUB1 &&执行过程sub1
??X,STR(Y,4)
CANCE

PROC SUB1
Z=X+2*Y &&z=30
X=X+10 &&x=20
DO SUB2 &&调用sub2
??Z &&z=40
ENDProc

PROC SUB2
PRIVATE Z
Y=Y+30 &&y为上级模块建立的内存变量,仍然有效=10+30=40
endPROC

STORE 10 TO X,Y
DO SUB1
??X,STR(Y,4)
CANCE
PROC SUB1
Z=X+2*Y
X=X+10
ENDP
DO SUB2
??Z
PROC SUB2
PRIVATE Z
Y=Y+30
PROC