双循环变量的相等条件:未指定还是未定义



我想直接谈谈术语。考虑:

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

如果我理解正确的话,由于二重算术是不精确的,这个循环可以是有限的,也可以是无限的。这被认为是未指明或未定义的行为吗?

程序的行为是由实现定义的:不同的实现可以有不同的行为,但它们必须记录它。这与未指定的行为(无需记录(和未定义的行为(任何事情都会发生(不同。另请参见未定义、未指定和实现定义的行为。

CCD_ 1的通用实现方式由IEEE754定义。如果您的实现遵循该标准,那么该循环将始终恢复相同的输出。

在IEEE754下,您的循环是无限的——您将跳过1.0,最终d将增长到添加0.1是不可行的大小。

相关内容

  • 没有找到相关文章

最新更新