0

我需要在考试前弄清楚一些事情。你能帮我回答下面的问题吗?如果我弄错了,我想修复它并学习真正的答案。

谢谢!!!

int x = 1; 
int foo (int a) { return a + bar (x) + x; } 
int bar (int b) { b++; return b * x; } 
int main () { int x = 2; foo(x);  }

以下情况的输出是什么:

a) 静态作用域和按值传递。

5 :: foo->2 * bar (x) + x-> 2 + [2 (b) * 1 (global x)] + 1 (global x)

b) 静态范围通过引用传递。

8 :: foo->2 * bar (x) + x-> 2 + [2 (b) * 2 (全局 x 改变)] + 2 (全局 x 改变)

c) 静态范围按值结果传递。

8 :: foo->2 * bar (x) + x-> 2 + [2 (b) * 2 (全局 x 改变)] + 2 (全局 x 改变)

d) 动态范围和值传递。

10 :: foo->2 * bar (x) + x-> 2 + [3 (b 是来自 main 的 x,即 2,我们将其添加 1) * 2 (foo x from main)] + 2 (foo x from主要的)

e) 动态范围和通过引用传递。

15 :: foo->2 * bar (x) + x-> 2 + [3 (b 是来自 main 的 x,它是 2,我们添加它 1) * 3 (来自 main 的 foo x,因为它被 b 别名也增加了)] + 3(来自 main 的 foo x)

4

0 回答 0