C++ &引用;::&引用;变量名c++; #包括 使用名称空间std; int d=10; int main() { int d=20; { int d=30; cout
C++ &引用;::&引用;变量名c++; #包括 使用名称空间std; int d=10; int main() { int d=20; { int d=30; cout,c++,variables,scope,C++,Variables,Scope,::d表示来自全局命名空间的d 编辑:有三个不同的变量具有相似的名称d。一个位于全局命名空间d=10,一个位于main函数(20)的范围内,最后一个位于main函数的内部块内(30) 在每个块中,您可以(通过名称)访问相应的变量,并且始终可以访问全局名称空间(通过:)。但是存在“d=20”,为什么它不更改为其值?@brahimYazıcı在该代码中有三个作用域级别。全局作用域,main()中的作用域以及最内层{}中的作用域。您在该程序中声明了三个独立的变量。这些变量并不是您一直在重新分配值的对象
::d
表示来自全局命名空间的d
编辑:有三个不同的变量具有相似的名称d
。一个位于全局命名空间d=10
,一个位于main
函数(20
)的范围内,最后一个位于main函数的内部块内(30
)
在每个块中,您可以(通过名称)访问相应的变量,并且始终可以访问全局名称空间(通过
:
)。但是存在“d=20”,为什么它不更改为其值?@brahimYazıcı在该代码中有三个作用域级别。全局作用域,main()中的作用域以及最内层{}中的作用域。您在该程序中声明了三个独立的变量。这些变量并不是您一直在重新分配值的对象。@qehgt虽然您是正确的,但如果您深入了解范围规则以及该段代码中实际发生的情况,可能会对遇到此问题的其他人非常有帮助。@Andrew Finnell感谢您的评论,我增加了更多的解释。因为C++组想使一种语言如此复杂和混乱,他们将确保他们的极端小时费率从现在起,因为他们将是唯一的一个能够对软件工作…(SNARK SNARK)。同样的原因,为什么<代码>文件。TXT < /C> >不与<代码> \子目录\文件.txt < /C> >相同。
#include <iostream>
using namespace std;
int d = 10;
int main()
{
int d = 20;
{
int d = 30;
cout << d << endl << ::d; // what does it mean?
}
return 0;
}