gpt4 book ai didi

c++ - 未初始化的值在 Linux 上的行为符合预期,但在 Windows 上则不然

转载 作者:太空狗 更新时间:2023-10-29 23:22:52 25 4
gpt4 key购买 nike

为什么未初始化的“最大”和“最小”值在 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

最佳答案

这在任何平台上都“有效”。

它所做的只是调用未定义的行为“似乎按照我的预期去做” 只是 UB 实现自身的一种方式。不过,这是一个相当不幸的问题,因为它让你相信你的代码是好的,直到有一天它突然出现在你的客户面前。

关于c++ - 未初始化的值在 Linux 上的行为符合预期,但在 Windows 上则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10950756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com