我需要在考试前弄清楚一些事情。你能帮我回答下面的问题吗?如果我弄错了,我想修复它并学习真正的答案。
谢谢!!!
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)