c++ - 如果存在三个变量,则范围解析运算符

标签 c++ scope

<分区>

我刚开始学习 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 
    }
}

但是如果我想访问 main() 内部 block 中的变量 i (i=20)。我怎么做?是否可以?这可能很愚蠢,但我不知道 c++ 的所有内置函数。所以想看看有没有什么办法。谢谢

最佳答案

我认为这可以使用 namespaces 来完成。

#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
    }
}

我希望这可以用于代码中的多个i

编辑 答案在语义上改变了程序,因为它使内部 i 成为全局变量。

关于c++ - 如果存在三个变量,则范围解析运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183362/

相关文章:

c++ - std::priority_queue 中具有相同优先级的元素的顺序

c++ - 容器类与类 - C++

c# - 拖动箭头断点时调试范围内的错误

Javascript firefox 无法找到所有其他浏览器所做的值

javascript - 如何从 html 可访问标记使用或创建非全局 JavaScript 变量缓存

c++ - 用静态库替换dll

c++ - Lock/CriticalSection 与 c++ 中的 volatile 的可见性

c++以编程方式创建模板化对象

performance - struts 1.x 表单作用域,为什么请求作用域更快?

javascript - 处理动态生成的 JavaScript 对象上的事件