考虑一个简单的问题
#include<iostream>
using namespace std;
int i=0;
void f()
{
int i=i;
cout<<i;
}
int main()
{
f();
}
上述代码会生成什么??
答案是未定义。
因为局部变量i屏蔽了全局变量i,所以 int i=i 中右边的i并不是全局的i.
那么如何使用全局i呢??
第一种加上::
#include<iostream>
using namespace std;
int i=0;
void f()
{
int i=::i;
cout<<i;
}
int main()
{
f();
}
结果输出 0
第二种,使用extern
#include<iostream>
using namespace std;
int i=0;
void f()
{
int i=1;
int i1;
if(i==1)
{
extern int i;
i1=i;
}
cout<<i1;
}
int main()
{
f();
}
结果输出 0