int x=1000和just x=1000产生不同的值

int x=1000 and just x=1000 yield different values

本文关键字:1000 just int      更新时间:2023-10-16

我正在学习全局和局部变量,突然在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写为开头行。为什么这会产生差异?

在您的第一个程序中,您使用语法int X = 1000声明另一个名为X的变量,该语法隐藏全局变量。由于printing()函数没有看到这个新变量,它会访问全局X并打印它

在第二个程序中,您为全局X分配一个新值,现在printing函数可以愉快地访问该值。

有关更多信息,另请参阅:https://en.wikipedia.org/wiki/Variable_shadowing