如果我们有一个全局定义的变量“x”和一个函数内部具有相同名称的另一个变量“x”。当我们打印“x”的值时,为什么我们总是得到函数内部分配的值?有什么方法可以打印全局变量值。
int x=8;
void testCode()
{
int x=2;
printf("%d",x); //prints 2
}
如果我们有一个全局定义的变量“x”和一个函数内部具有相同名称的另一个变量“x”。当我们打印“x”的值时,为什么我们总是得到函数内部分配的值?有什么方法可以打印全局变量值。
int x=8;
void testCode()
{
int x=2;
printf("%d",x); //prints 2
}
在其他语言中,是的。在 C 中,无法在同一范围内访问全局。有一种方法可以声明嵌套范围(请参阅其他答案),它可以让您访问非静态全局,但不建议这样做 -不要这样做。如果要获取全局变量,不要用同名的局部变量隐藏。
您可以通过以下方式在本地打印全局:
int a=6;
int main()
{
int a=5;
printf("%d",a);
{
extern int a;
printf("%d",a);
}
}
你可以这样做:
int x = 8;
void testCode()
{
int x=2;
printf("%d",x); //prints 2
{
extern int x;
printf("%d", x); // prints 8
}
}
在 C 什么Local variables Have same Name as Global variables
时候Local variable get highest priority.
这就是为什么我们在打印时总是获取局部变量值的原因。
如果您打印出局部变量的 blcok,则将打印 GLOBAL 值。
您可以通过调用另一个函数来打印全局值。您没有声明具有相同名称的局部变量
例子:
int i=20;
int get_global();
main()
{
int i=5;
printf("LOCAL=%d",i));
printf("GLOBAL=%d",get_global());
}
int get_global()
{
return i;
}