已知函数f().G()的定义如下所示,调用函数f时传递给形参x的值是5。若g(a

admin2022-08-02  30

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

选项 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://tihaiku.com/congyezige/2425536.html

最新回复(0)