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

本题考查程序语言基础知识。
首先分析函数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)









