RoG*_*RoG 1 c c++ scoping dynamic-scope
在下面的代码中,2打印出来.
int x = 1;
int f(int y)
{
return x;
}
int main() {
x = 2;
printf("%d", f(0));
}
Run Code Online (Sandbox Code Playgroud)
如果我们在C中有静态作用域,它会怎么样?为什么不1打印?
印花 2在这种情况下不是动态范围,是吗?
我认为在静态作用域中它应该使用最近的x到函数定义.
它确实需要最近的x,但由于你只有一个x它并不重要.
如果您将代码更改为
int x = 1;
int f(int y)
{
return x ;
}
int main() {
int x=2;
printf("%d", f(0));
}
Run Code Online (Sandbox Code Playgroud)
所以你有2个x,全局的和当地的main你会看到1打印.