如下程序的运行结果是【9】。 CLEAR STORE 100 TO x1 x2 SET UDFPARMS TO VALUE DO p4 WITH x1,(X2) ?x1.x2 *过程p4 PROCED

admin2011-10-24  23

问题 如下程序的运行结果是【9】。
    CLEAR
    STORE 100 TO x1 x2
    SET UDFPARMS TO VALUE
    DO p4 WITH x1,(X2)
    ?x1.x2
    *过程p4
    PROCEDURE p4
    PARAMETERS x1,X2
    STORE x1+1 TO x1
    STORE x2+1 TO x2
    ENDPROC

选项

答案101 100

解析 SET UDFPARMS TO VALUE命令是设置参数传递的方式为按值传递,表示形参变量值的改变不会影响实参变量的取值;SET UDFPARMS TO REFERENCE命令是设置参数传递的方式为按引用传递,形参变量值改变时,实参变量值也随之改变。
    程序首先给x1和x2赋初值100。
    DO p4 WITH x1,(x2)命令是调用p4模块程序,用此命令调用模块程序时的参数传递方式并不受UDFPARMS值的设置的影响,其中,实参x1是变量,虽然设置了参数传递的方式为按值传递,但变量还是会按引用传递,传递的不是变量的值,而是变量的地址,在模块程序中对形参变量值的改变,同样是对实参变量值的改变,但用一对圆括号将一个变量括起来使其变成一般形式的表达式时,不管什么情况,总是按值传递,所以x2、的值是不变的,即还是100。
    在p4模块程序中,PARAMETERS x1,x2命令是建立私有变量x1和x2,然后利用STORE赋值命令重新给x1和x2赋值为x+1,此时x1和x2的值都是101。
    调用模块程序时,系统自动把实参x1的地址传递给对应的形参x1,当形参x1重新赋值为101后,实参的值也会相应的变为101,而x2因加了括号,成为了一般形式的表达式,不管什么情况,总是按值传递,x2的值不变,还是100,故本题答案为101 100。
转载请注明原文地址:https://kaotiyun.com/show/uZzp777K
0

最新回复(0)