范围解析运算符(如果存在三个变量) 我刚开始学习C++。我遇到了范围解析操作符,我尝试了一个类似这样的程序 #include <iostream> using namespace std; int i = 40; int main(){ int i = 20; { int i = 10; cout<< ::i; // prints 40 cout<<i; // prints 10 cout << i; // how do i print variable i whose value is 20 } } #包括 使用名称空间std; int i=40; int main(){ int i=20; { int i=10; cout

范围解析运算符(如果存在三个变量) 我刚开始学习C++。我遇到了范围解析操作符,我尝试了一个类似这样的程序 #include <iostream> using namespace std; int i = 40; int main(){ int i = 20; { int i = 10; cout<< ::i; // prints 40 cout<<i; // prints 10 cout << i; // how do i print variable i whose value is 20 } } #包括 使用名称空间std; int i=40; int main(){ int i=20; { int i=10; cout,c++,scope,C++,Scope,我认为这可以通过使用名称空间来实现 #include <iostream> using namespace std; namespace inner{int i;} int i = 40; int main() { inner::i = 20; { int i = 10; cout<< ::i; // prints 40 cout<<i; // prints 10 cout

我认为这可以通过使用
名称空间来实现

#include <iostream>
using namespace std;
namespace inner{int i;}
int i = 40;
int main() {
    inner::i = 20;
    {
        int i = 10;
        cout<< ::i;  // prints 40
        cout<<i;    // prints 10
        cout << inner::i; // this prints 20
    }
}
#包括
使用名称空间std;
命名空间内部{int i;}
int i=40;
int main(){
内:i=20;
{
int i=10;

我认为这是不可能的。我认为这是不可能的。很少有情况下你想像这样对一个变量进行阴影处理。在这少数情况下,当你还想引用外部变量时,绝对是零。所以这就是为什么这是不可能的。为什么要编写乍看起来模棱两可的代码?只需为v使用合理的名称Arabes并避免将来可能出现的混淆。可能或不,但非常有趣。这改变了程序的语义,但是,代码>内部::我现在是全局的,在这里它是本地的。我应该考虑删除答案吗?@斯蒂芬林可能,它所能做的一切都是混乱的。