这是我下一次考试的(真的)艰苦的练习。它的目的是为了理解范围、绑定和参数传递规则。我什至无法弄清楚输出的前 3 个数字,这让我发疯。
这个具有动态范围、浅绑定和从左到右的表达式求值的类 C 程序的输出是什么?
1 A : {
2
3 int x = 5;
4 int y = 7;
5
6 proc P(ref int y, valueresult int z, int R(name int)) {
7 z = y-- + R(++x + ++y);
8 write(x, y, z);
9 z = R(z++);
10 }
11
12 B : {
13
14 int x = 3;
15
16 int Q(name int w) {
17 return (w + x++ + y++);
18 }
19
20 P(x, y, Q); // start here
21 write(y++, x++);
22 }
23
24 write(y, x);
25
26 }