我不确定为什么在f()
的第二次运行中,i
被设置为1234
?我认为当第一个f()
被执行以完成时,第一个f()
的堆栈框架将被"弹出",我认为这意味着i
现在是一个不可预测的值.对于调用g(5432)
之后的第三个f()
函数调用也是如此.为什么i
突然变成了5432
呢?
void f();
void g(int);
void main() {
f();
f();
g(5432);
f();
}
void f() {
int i;
printf("%d\n", i);
i = 1234;
}
void g(int val) {
printf("%d\n", val);
}
以下是我在运行代码时得到的输出:
0
1234
5432
5432