在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:負無窮大
再遇到類似的出錯信息時,就可以解決了。