如何在不使用extern关键字的情况下访问全局值?

时间:2019-05-01 13:18:23

标签: c

从下面的代码中如何打印全局值:

条件是,我们不能使用extern关键字,不应该注释本地初始化,也不应该移动printf函数。

#include <stdio.h>

int a = 20;

int main()
{
    int a = 10;
    printf("%d",a);
}

我希望输出20

1 个答案:

答案 0 :(得分:2)

extern将无济于事,因为您在大多数内部作用域(在这种情况下,是函数main的作用域)中都有另一个具有相同名称的变量。因此,如果是全局变量,则会看到此变量。

您需要重命名这些变量之一。

int a=20;
int main()
{
    int b=10;
    printf("%d",a);
}

您可能有更多内部作用域:

int a=20;
int main()
{
    int a=10;
    {   
        int a = 5;
        {
            int a = 2;
            printf("%d",a);
        }
    }
}

结果为2