0
我有我分析這段代碼,但我不明白這行:雙比較本身
double level = 0;
...
if (!(level == level) && !(level < level) && !(level > level))
exit(0);
我認爲它是關於雙比較對象。任何想法是什麼?
我有我分析這段代碼,但我不明白這行:雙比較本身
double level = 0;
...
if (!(level == level) && !(level < level) && !(level > level))
exit(0);
我認爲它是關於雙比較對象。任何想法是什麼?
這是一個相當過度設計的測試非數字(NaN)。
NaN是一個特殊的浮點值。 (並非所有的浮點類型都有它,但最常見的一種 - IEEE754 - 確實如此。)
它被定義爲比較不等於所有其他數字,包括它本身。
它也被定義爲不大於或不小於任何其他數字,包括其本身。 (雖然這個後續測試是多餘的)。
從C++ 11開始,您可以改爲使用std::isnan(level)
。在此之前,我最喜歡的測試方式是使用相當簡單的表達level != level
。
查看NAN(非數字),這將使該表達式返回true。 –
誰寫的? – i486
我的第一個想法是,他們試圖看看'級別'是否爲NaN。我假設你有一些中介代碼會改變'level'的值嗎?你從哪裏得到這個代碼?它有什麼作用? –