我有三个程序,我使用extern关键字.我无法理解结果.以下是三个例子:
示例1:我期望下面的代码会给出多个声明的编译错误k.但它运作正常吗?
int k; //works fine
extern int k = 10;
void main()
{
cout<<k<<endl;
getchar();
}
Run Code Online (Sandbox Code Playgroud)
示例2:当我尝试在上面的示例中初始化"k"时,编译器会出错.为什么?
int k = 20; //error
extern int k = 10;
void main()
{
cout<<k<<endl;
getchar();
}
Run Code Online (Sandbox Code Playgroud)
示例3:在此示例中,我更改了示例1中提到的定义的顺序.当我编译此代码时,我收到错误.为什么?
extern int k = 10;
int k; //error
void main()
{
cout<<k<<endl;
getchar();
}
Run Code Online (Sandbox Code Playgroud)