已知函数f()、g()的定义如下所示,调用函数f时传递给形参x的值是5。若g(a)采用引用调用(call by reference)方式传递参数,则函数f的返回值为 (12) ;若g(a)采用值调用(call by value)的方式传递参数,则函数f

admin2017-11-27  70

问题 已知函数f()、g()的定义如下所示,调用函数f时传递给形参x的值是5。若g(a)采用引用调用(call by reference)方式传递参数,则函数f的返回值为  (12)  ;若g(a)采用值调用(call by value)的方式传递参数,则函数f的返回值为  (13)  。其中,表达式“x>>1”的含义是将x的值右移1位,相当于x除以2。

(13)

选项 A、35
B、32
C、11
D、7

答案D

解析 本题考查程序语言基础知识。
    首先分析函数f的语句执行过程。形参x的值为5,将x的值(二进制形式高位都为0,低八位为00000101)右移1位后赋值给a,使得a的值为2(二进制形式高位都为0,低八位为00000010),然后执行函数调用g(a)。
    若以引用调用方式调用g(a),则在函数g执行时,其形参x相当于是f中a的别名,对于运算“x=x*(x+1)”,此运算前x的值为2,运算后x的值改变为6,返回到函数f后a的值被改变为是6,在f中a和x是两个数据对象,所以f结束时返回a+x的值为11即(5+6)。
    若以值调用方式调用g(a),则在函数g执行时,其形参x是一个独立的数据对象(值为2),接下来进行运算“x=x*(x+1)”,运算前x的值为2,运算后x的值改变为6,最后返回到函数f,a的值不改变,仍然是2,所以f结束时返回a+x的值为7(即2+5)。
转载请注明原文地址:https://kaotiyun.com/show/YBPZ777K
0

最新回复(0)