#include <iostream>
using namespace std;
int x;
void p(int a, int &b) {
cout << x << " " << a << " " << b << endl;
if (a < b) {
a = x+b;
}
else {
--x;
b += a;
a = x/2;
cout << x << " " << a << " " << b << endl;
p(b-x, a);
}
cout << x << " " << a << " " << b << endl;
}
int main() {
x = 17;
p(42, x);
cout << x << endl;
}
这段代码的输出如下,我不理解:
17 42 17
58 29 58
58 0 29
58 87 29
58 29 58
58
具体而言,在
main
,
x=17
指定一个全局参数。它开始计算
p(a=42,&b=17)
。它打印出:
x = 17 (global),a = 42 ,b = 17 (pointer)
。到目前为止还不错!
接下来,它转到
if
。
if 42<17
不满意,转到
else
,其中
x
减一所以
x=17-1=16
。不是58。