在Visual FoxPro中,有如下程序: *程序名:TEST.PRG SET TALK OFF PRIVATEX,Y X="数据库" Y="管理系统" DO sub1 ?X+Y RETURN *子程

admin2010-01-24  38

问题 在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时,“+”左右两边的数都是字符型数据,所以“+”表示字符的连接。在屏幕中显示的结果应为“数据库系统”。
转载请注明原文地址:https://jikaoti.com/ti/7PF7FFFM
0

最新回复(0)