这个局部变量 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
,只是调试器弄糊涂了。
我已经大大简化了这个问题,因为在更简单的情况下会出现同样的问题:
#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
,只是调试器弄糊涂了。