我知道 C 和 C++ 中的局部变量不会自动初始化,如果没有给它们初始值,它们就有垃圾值。我也知道全局和静态变量默认初始化为零。在 C++ 中使用未初始化的变量会导致未定义的行为。
但是最近我尝试在 C++ 的各种实现上遵循简单的 C++ 程序,所有的结果都给我 0 作为输出。
#include <iostream>
int main()
{
int u;
std::cout<<u<<'\n';
}
输出:
代码块 13.12 IDE:0
奥威尔开发 C++ 5.8.3:0
Ideone.com:0(访问:http: //ideone.com/zWrgwo)
现代编译器是否会自动将局部变量初始化为 0?还是这种类型的程序仍然代表未定义的行为?是否保证在每个现代 C++ 实现中总是看到 0 作为输出?