如何打印具有相同名称的全局变量和局部变量的值?

Omk*_*ant 12 c gcc

这是我的代码,我想打印15和12,但由于实例成员隐藏a的本地值被打印两次.

#include <stdio.h>                                  
int a = 12;             
int main()          
{           
    int a = 15;             
    printf("Inside a's main local a = : %d\n",a);                  
    printf("In a global a = %d\n",a);            
    return 0;           
}
Run Code Online (Sandbox Code Playgroud)

为什么有没有办法在c中打印它?...顺便说一下,我在c ++中知道它.

oua*_*uah 22

extern在新的复合语句中使用说明符.

这条路:

#include <stdio.h>      

int a = 12;             

int main(void)          
{           
    int a = 15;             
    printf("Inside a's main local a = : %d\n", a);

    {
        extern int a;
        printf("In a global a = %d\n", a);
    }

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

  • @tuğrulbüyükışık这是C,而不是Java!;) (3认同)
  • @Sorcrer新块`{}`创建一个新范围; 在内部作用域中声明的`a`标识符隐藏在外部作用域中声明的`a`标识符. (3认同)