2009-04-24 39 views
1

我正在寫一個小型庫,您可以在其中設置範圍;開始和結束點是雙打。該庫有一些內置或計算出的該範圍的默認值,但一旦它們由範圍設置功能設置,就無法返回到默認值。NaN作爲特殊參數

因此,我喜歡做的是使用NaN值作爲指標來使用默認值,但我還沒有找到NaN的任何標準定義,並閱讀gcc手冊它說,有平臺不支持NaN。

我的問題是:

是否有不使用IEEE 754浮點數任何最近的平臺?我不關心一些模糊的嵌入式設備,因爲lib專注於具有GUI的平臺,準確地說是cairo。

第二個問題是你會使用NaN值作爲這樣一個目的的參數嗎?我將它定義在標題中的某處沒有問題。

回答

3

NaN不等於任何數字,甚至不等於它自己。因此,使用它作爲指標會導致代碼錯誤甚至錯誤。我不會以這種方式使用它。

+2

人做我曾經知道你的意思是什麼方面的錯誤令人費解......我第一次遇到了奇怪的東西的NaN,我花了時間來實現楠= NaN的... – 2009-04-24 23:52:00

2

我不會用NaN的用於此目的 - 不僅僅是楠問題使用(而且有很多),這將是最好添加一個函數調用API重置爲默認值。

1

NaN在代碼中有點奇怪,我當然不希望圖書館使用它們不適用的目的。

編輯:我剛纔想到的另一個問題是,如果一個計算結果在NaN中,並且它作爲參數傳遞,您將獲得意想不到的行爲。例如:

MyFunc(SomeCalculation()); //if SomeCalculation() is assumed to not be NaN, 
          //this will cause unintended behavior