求助!!精通Visual Foxpro的大哥大姐进!在下感激涕泞...
主程序MAIN.PRG*SUB1.PRG*SUB2.PRGCLEAPARABPRIVCA=1PRIVCA=3B=1A=2B=3C=1C=2C=3DOSUB1WITHA?A...
主程序MAIN.PRG *SUB1.PRG *SUB2.PRG
CLEA PARA B PRIV C
A=1 PRIV C A=3
B=1 A=2 B=3
C=1 C=2 C=3
DO SUB1 WITH A ?A,B,C ?A,B,C
?A,B,C DO SUB2 RETU TO MASTER
RETU B=2
RETU
程序的运行结果是什么? 展开
CLEA PARA B PRIV C
A=1 PRIV C A=3
B=1 A=2 B=3
C=1 C=2 C=3
DO SUB1 WITH A ?A,B,C ?A,B,C
?A,B,C DO SUB2 RETU TO MASTER
RETU B=2
RETU
程序的运行结果是什么? 展开
3个回答
展开全部
结果
2 1 2
3 3 3
3 1 1
在变量的定义传递和引用中要遵循以下几条:
1. 变量须先定义在使用(VF中:主程序的私有变量、子程序中在上级程序里未曾出现过的私有变量可以不定义)
2. 变量访问时优先级遵循顺序:局部变量>私有变量>全局变量
3. 按值传递不改变上级程序变量的值,按参传递改变上级程序变量值
分析如下
程序执行顺序 变量变化
main sub1 sub2
clear
a=1 a=1
b=1 b=1
c=1 c=1
do sub1 with a &&按值传递
para b &&在sub1中建立私有变量b接收了main中a的值
b=1
priv c &&在sub1中定义一个私有变量c c=null(空值)
a=2 &&sub1中未定义a,访问main中的私有变量a
a=2 a=2
c=2 &&访问sub1中定义的所有变量c c=2
do sub2
priv c && 在sub2中定义私有变量c
a=3 &&同sub1中'a=2'字句 a=3 a=3 a=3
b=3 &&访问sub1中'para b'接收参量字句时定义的私有变量b
b=1 b=3 b=3
c=3 &&访问sub2中定义的所有变量3 c=3
return to master && 返回main程序
最终变量值 main sub1 sub2
a 3 3 3
b 1 3 3
c 1 2 3
至于输出结果,对照过程中变量的变化容易得知
2 1 2
3 3 3
3 1 1
在变量的定义传递和引用中要遵循以下几条:
1. 变量须先定义在使用(VF中:主程序的私有变量、子程序中在上级程序里未曾出现过的私有变量可以不定义)
2. 变量访问时优先级遵循顺序:局部变量>私有变量>全局变量
3. 按值传递不改变上级程序变量的值,按参传递改变上级程序变量值
分析如下
程序执行顺序 变量变化
main sub1 sub2
clear
a=1 a=1
b=1 b=1
c=1 c=1
do sub1 with a &&按值传递
para b &&在sub1中建立私有变量b接收了main中a的值
b=1
priv c &&在sub1中定义一个私有变量c c=null(空值)
a=2 &&sub1中未定义a,访问main中的私有变量a
a=2 a=2
c=2 &&访问sub1中定义的所有变量c c=2
do sub2
priv c && 在sub2中定义私有变量c
a=3 &&同sub1中'a=2'字句 a=3 a=3 a=3
b=3 &&访问sub1中'para b'接收参量字句时定义的私有变量b
b=1 b=3 b=3
c=3 &&访问sub2中定义的所有变量3 c=3
return to master && 返回main程序
最终变量值 main sub1 sub2
a 3 3 3
b 1 3 3
c 1 2 3
至于输出结果,对照过程中变量的变化容易得知
展开全部
3,2,3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从主程序来看,没有声明全局变量!!
共三个输出:
第一个输出产生于 sub1,其次是sub2,然后回过头来执行主程序中的输出
2,1,2
3,3,3
1,1,1
你在程序中运行一下不就知道了??
共三个输出:
第一个输出产生于 sub1,其次是sub2,然后回过头来执行主程序中的输出
2,1,2
3,3,3
1,1,1
你在程序中运行一下不就知道了??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询