已知函数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.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)
你可能感兴趣的试题
-
- A.V(S2)和P(S4)
- B.P(S2)和V(S4)
- C.P(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案
-
- A.V(S1)P(S2)和V(S3)
- B.P(S1)V(S2)和V(S3)
- C.V(S1)V(S2)和V(S3)
- D.P(S1)P(S2)和V(S3)
- 查看答案
-
- A.P(S4)和V(S4)V(S5)
- B.V(S5)和P(S4)P(S5)
- C.V(S3)和V(S4)V(S5)
- D.P(S3)和P(S4)V(P5)
- 查看答案
-
- A.P(S3)和V(S4)V(S5)
- B.V(S3)和P(S4)P(S5)
- C.P(S3)和P(S4)P(S5)
- D.V(S3)和V(S4)V(S5)
- 查看答案
-
- A.P(S2)和P(S4)
- B.P(S2)和V(S4)
- C.V(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案