c++ - 未命名的命名空间导致值不正确

标签 c++

我在装有 visual studio 2015 community edition 的 windows 7 机器上。

考虑以下代码:

#include "stdafx.h"
#include "iostream"
using namespace std;

namespace 
{
    int y=4;
    int x=6;
}
int u = ::y;
int y = ::y; 
int x = 567;



int main()
{
    cout << u << "\n";
    cout << ::x << "\n";
    //cout << y << "\n";
    cout<< ::y << "\n";
    int y2;

    cin >> y2;
    return 0;
}

程序的结果是:

4 567 0

如果我们看到 u 和 x 是对的但 y 是错的。为什么?

最佳答案

int y = ::y

此处第二个 y 与第一个相同 - 变量用自己的值初始化。由于它是一个全局变量,它自己的值为零。

一旦声明将名称 y 引入全局命名空间,就没有语法可以从未命名的命名空间访问 y。变量声明可从其自身的初始化器访问。

关于c++ - 未命名的命名空间导致值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53464279/

相关文章:

c++ - C++ 中的模板和高阶种类

c++ - 从 std::vector 获取最后一个元素

c++ - `=default` move 构造函数是否等同于成员 move 构造函数?

c++ - 为什么 Pascal Script 期望在我的外部函数声明附近有另一个分号?

c++ - C++中移动赋值运算符的继承

c++ - 恒定时间更改C++中数组的前k个元素?

c++ - 如何在 C++ 中定义一个制作精良的消息类

c++ - 按特定顺序打印队列

c++ - 不合格调用时 clang 和 gcc 均存在错误

c++ - 如何在 Ubuntu Qt 中获取事件窗口标题?