一个“-1.#INF000”引发的bug

来源:互联网 发布:淘宝单品销量排行榜 编辑:程序博客网 时间:2024/06/11 09:58

在c++代码中,今天调试时,发现一个变量的值都变成了“-1.#INF000”。如下图所示:

出错的变量


  

变量值变得不正常了,所以接下来的操作都不正确了,最终导致了不正常的结果。

起初不知道该怎么去调试,感觉无从下手。后来加了测试的判断,当满足该判断时加入assert(false), 这样就可以轻松的找到引起错误的罪魁祸首了。

出错的变量名为:box,box.mMinimum 和 box.mMaximum存的是float类型的值。

加入的判断为:

 if(box.mMinimum -10.0f == box.mMinimum)
{
    assert(false);
}

这里其实box.mMinimum做任何的操作都不会改变其本身的值。利用这一特点快速调试出bug出错的地方。

下面对这一类的值做一下解释:

(1)1.#INF: 表示无穷小
(2)-1.#IND: 做除法时除数为0
(3)1.#INF000:正无穷大
(4)-1.#INF000:负无穷大
再遇到类似的出错信息时,就可以解决了。

0 0
原创粉丝点击