这个局部变量 shadowing/hiding 是另一个正常的还是 Visual Studio 中的错误?

Is this local variable shadowing/hiding another normal or a bug in Visual Studio?

我已经大大简化了这个问题,因为在更简单的情况下会出现同样的问题:

#include <iostream>

int height;    
int main()
{
    std::cout << height; // Visual Studio debugger shows this value as -858993460    
    int height;
}

调试器显示错误的变量值似乎有问题。变量值是正确的,因为打印变量显示正确的全局高度值 0.

你是对的,全局变量height没有被遮蔽直到[=12]的最后语句中自动变量height的声明=].

std::cout << height; 将使用全局变量 height.

是的,这让调试器感到困惑。它显示 local height 变量的值,在调试版本中它被初始化为 0xCCCCCCCC,或者 -858993460 以十进制模式显示。

编译器做了正确的事情,在函数的第一行获取了 global 变量 height,只是调试器弄糊涂了。