C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – “const”双重复制比较安全吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我注意到有很多关于浮点计算错误的问题的讨论,要求您比==使用更复杂的比较.然而,所有这些文章似乎都假设值被操纵(或双重计算),而我没有看到一个例子,覆盖一个非常简单的常量复制.

请考虑以下内容

const double magical_value = -10;

class Test
{
    double _val;

public:
    test()
        : _val(magical_value)
    {
    }

    bool is_special()
    {
        return _val == magical_value;
    }
};

据我所知,magical_value应该在编译时设置,以便在这一点上进行所有的舍入.之后,该值应该被复制到类中,并与原来的值进行比较.这样的比较保证是安全的吗?或者可以复制或比较在这里引入错误

请不要建议替代比较或神奇的价值使用方法,这是另一个主题.我只是好奇这个假设.

编辑:只是为了注意,我有些担心,在某些架构上,优化可能导致将值复制到不同大小的浮点寄存器,从而导致精确值的差异.有这样的风险吗?

解决方法

是的,安全(这是复制操作的要求,由=表示).只要源和目的地类型相同,就不需要担心转换/促销.

但是,请注意,magical_value可能不完全包含10,而是近似值.这个近似将被复制到_val.

给定const限定符,有可能magical_value可能被优化掉(如果你打开优化)或按原样使用(即没有内存可能被用尽).

大佬总结

以上是大佬教程为你收集整理的c – “const”双重复制比较安全吗?全部内容,希望文章能够帮你解决c – “const”双重复制比较安全吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: