gpt4 book ai didi

c++ - 双循环变量 : unspecified or undefined? 的相等条件

转载 作者:行者123 更新时间:2023-11-30 00:42:41 26 4
gpt4 key购买 nike

我想直接了解术语。考虑:

for (double d = 0.0; d != 1.0; d += 0.1)
cout << d << " ";

如果我没理解错的话,由于 double 算法是不精确的,这个循环可以是有限的也可以是无限的。这是否被视为未指定或未定义的行为?

最佳答案

你程序的行为是implementation defined :不同的实现可以有不同的行为,但他们必须记录它。这不同于 unspecified behavior (无需记录)和 undefined behavior (什么都可以)。另见 Undefined, unspecified and implementation-defined behavior .

double 的常见实现由 IEEE754 定义。如果您的实现遵循该标准,那么该循环将始终恢复相同的输出。

您的循环在 IEEE754 下是无限的 - 您将跳过 1.0 并且最终 d 将增长到添加 0.1 的大小空操作。

关于c++ - 双循环变量 : unspecified or undefined? 的相等条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588680/

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