gpt4 book ai didi

c++ - C++ 中零初始化值的 float 比较

转载 作者:行者123 更新时间:2023-11-27 23:46:53 24 4
gpt4 key购买 nike

使用“==”运算符来确定 C++ 中的 double 变量自初始化为 0.0 以来是否已更改是否安全?

出于性能原因,我想避免在嵌套 for 循环内重新计算已经计算过的值。

如果认为不安全:这会导致误报(即尽管值不等于 0.0,表达式返回 true)、假阴性(即表达式返回 false,尽管值确实为 0.0)或两者兼而有之/未确定的行为?

我正在使用 C++-14 和 GNU C++ 编译器 v5.4。

最佳答案

在 C++ 中,当且仅当 x 为零时,表达式 x == 0. 的计算结果为真。

唯一可能出现假阳性或假阴性的感觉是:

  • x 是当理想的精确数学结果不为零时产生零的计算结果,反之亦然。换句话说,问题是 x 不包含您想要的值,而不是与零比较无法正常工作。
  • 比较使用浮点表达式,而不是简单的对象 x,如 x/y == 0.。 C++ 允许以比标称类型更精确的方式计算表达式。当通过强制转换分配或转换值时,将丢弃这种多余的精度。因此,比较可能表明表达式不为零,即使将其分配给对象会在对象中产生零。

关于c++ - C++ 中零初始化值的 float 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49829815/

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