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