在Visual FoxPro中,有如下程序:
*程序名:TEST.PRG
SET TALK OFF
PRIVATEX,Y
X="数据库"
Y="管理系统"
DO sub1
X+Y
RETURN
*子程序:sub1
PROCEDU sub1
LOCALX
X="应用"
Y="系统"
X=X+Y
RETURN
执行命令DO TEST 后,屏幕显示的结果应是()。
参考答案:数据库系统
解析:
[知识点] 变量的作用域及子程序调用 [评析] PRIVATEX,Y隐藏主程序中可能存在的变量X,Y并且给变量X,Y赋值,X=”数据库”,Y=”管理系统”。DO sub1调用子程序sub1,当程序执行到DO sub1时会转去执行sub1当中的语句。子程序sub1中,首先定义变量X为局部变量,LOCAL命令在建立局部变量的同时,也具有隐藏在上层模块中建立的同名变量的作用。但与PRIVATE命令不同,LOCAL命令只在它所在的模块内隐藏这些同名命令,一旦到了下层模块,这些同名变量就会重新出现。只能在过程Sub1中使用,在过程Sub1中变量X=”应用”,Y=”系统”,X=X+Y,变量X的值就变为了”应用系统”。当过程Sub1调用完毕后,回到主程序中,去执行DO后的语句,因为变量X是局部变量,所以在过程Sub1中发生了变化,但是并不能改变主程序中变量X的值,所以过程sub1执行完后,主程序中的变量X的值恢复有效性,还等于“数据库”,而变量Y在过程Sub1中发生了变化,变量Y等于“系统”。执行到X+Y时,“+”左右两边的数都是字符型数据,所以“+”表示字符的连接。在屏幕中显示的结果应为“数据库系统”。