在下面的代码中,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
打印.