gpt4 book ai didi

c++ - C/C++ NaN 还是 bool 值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:04 24 4
gpt4 key购买 nike

我必须保留一个双值缓存。使用后应作废。两种选择

一个是添加boolean flag,缓存值好的时候true,使用的时候设置为false,flag为false的时候重新计算并重新填充。

第二个更有趣 - 我可以将它保留为 double 值并使用 NaN 作为无效/需要重新计算标志。

double get() const {
if (!isnan(_value)) {
double t = _value;
_value = std::numeric_limits<double>::quiet_NaN;
return t;
}
}

有人反对吗?对效率有什么想法吗?

最佳答案

使用 bool 值,否则当您计算的 double 结果实际上是 NaN(由于计算)时,您最终会遇到一些有趣的问题/错误。如果您依赖 NaN 作为“我已经使用该值”的信号,那么您将无法区分“有效”未使用的 NaN。

更不用说这种语义重载会导致 future 阅读您的代码的人(甚至是几个月后的您自己)挠头试图破译这种巧妙的用法。 ;-)

一般来说,重载变量的含义是一种不好的做法。一开始它可能看起来很可爱,但它会不可避免地造成更多伤害。

效率而言 - 我真的建议您先进行衡量,然后再考虑优化。我敢打赌,运行测试后,您会发现速度差异远低于 CPU 温度波动引起的性能噪音。

关于c++ - C/C++ NaN 还是 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32769148/

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