在下面的代码中,打印了2
。
int x = 1;
int f(int y)
{
return x;
}
int main() {
x = 2;
printf("%d", f(0));
}
如果我们在 C 中有静态作用域,那会怎样?为什么不打印 1
?
在这种情况下打印 2
不是动态范围,对吗?
我认为在静态作用域中它应该取最接近函数定义的 x。
最佳答案
它确实需要最近的 x
,但由于您只有一个 x
,所以这并不重要。
如果您将代码更改为
int x = 1;
int f(int y)
{
return x ;
}
int main() {
int x=2;
printf("%d", f(0));
}
所以你有 2 个 x
,全局的和本地的 main
你会看到 1
被打印出来。
关于c++ - C/C++ 中的静态作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41829265/