为什么未初始化的“max”和“min”值在 Linux 上有效,而在 Windows 上无效?例如:
double max, min, test;
while (1)
{
std::cin >> test;
if (test > max)
max = test;
if (test < min)
min = test;
}
这适用于 Linux。我知道一个事实,因为我已经使用它(尽管直到现在我才意识到这是多么可怕)至少 3 个月了。但是,许多同事告诉我,这在他们的机器上被破坏了:他们使用 Visual Studio 编译。他们的陈述是否有道理,为什么?这仅仅是UB的情况吗?如果是这样,在我没有注意到的情况下,过去几个月它是如何工作的?
另请注意:gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 和 Visual Studio 2010