これは私の次の試験のための(本当に)難しい練習です。これは、スコープ、バインディング、およびパラメーターの受け渡しのルールを理解することを目的としています。出力された最初の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 }