我正在学习全局变量和局部变量,突然在IDE中进行实验时,我注意到了以下内容:
以下程序产生100 500 1000(在三个差异行中)-
# include <iostream>
using namespace std;
int X=100;
void printing ()
{
cout<<X<<"\n";
int X=500;
cout<<X<<"\n";
}
int main ()
{
int X=1000;
printing ();
cout<<X<<"\n";
return 0;
}
下面的程序产生1000 500 1000(在三个差异行中)-
# include <iostream>
using namespace std;
int X=100;
void printing ()
{
cout<<X<<"\n";
int X=500;
cout<<X<<"\n";
}
int main ()
{
X=1000;
printing ();
cout<<X<<"\n";
return 0;
}
请注意,在第一个代码中,我写了
int X = 1000
作为主函数的开头行,在第二个代码中,我写了X = 1000
作为开头的行。为什么会产生差异? 最佳答案
在第一个程序中,使用语法X
声明另一个变量int X = 1000
,该语法隐藏全局变量。由于您的printing()
函数没有看到此新变量,因此它将访问全局X
并进行打印。
在第二个程序中,您为全局X
分配了一个新值,现在您的printing
函数可以很高兴地访问它。
有关更多信息,请参见:https://en.wikipedia.org/wiki/Variable_shadowing