所以我只是想看看 C 中的这一小段代码。基本上我是在尝试学习如何阅读/确定使用静态和动态作用域时的差异,以及输出将如何不同,具体取决于哪个我在用。我选择了 3 行,打算尝试比较静态符号表和动态符号表,但不知道从哪里开始。
# include <stdio.h>
int a = 101;
char b = 'z'; int q(char b) {
int a = 89;
printf ("%c\n",a);
printf("%d\n",b); // line 7
return a;
}
void p() {
double b = 2.6;
printf("%c\n",a);
printf("%f\n",b); // line 13
a = q(a);
}
int main() {
char a = 'L';
printf("%c\n",b); // line 17
p();
return 0;
}
代码运行良好 我只是不确定我是否可以选择使用静态与动态范围界定或如何选择。我真正需要的只是能够理解正在发生的事情。
最佳答案
在第 7 行,b
引用了 q()
的参数;它是 b
的最近声明。
在第 13 行,b
引用局部变量。
在第17行,b
指的是全局变量;没有其他候选人可以使用。
关于c - 试图了解此 C 程序中静态和动态作用域之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58515248/