2009-04-24 1 views
1

私はあなたが範囲を設定できる小さなライブラリを書いています。開始点と終了点は2倍です。ライブラリには、その範囲のビルドインまたは計算されたデフォルト値がありますが、範囲設定関数によって設定されると、デフォルト値に戻る方法はありません。特別な引数としてのNaN

私がしたいのは、デフォルト値を使用するための指標としてNaN値を使用することですが、NaNの標準定義を見つけられず、gccマニュアルを読むと、 NaNをサポートしていません。

私の質問は以下のとおりです。

は、IEEE 754浮動小数点数を使用していない任意の最近のプラットフォームはありますか?私はlibがGUIを持つプラットフォームに焦点を当てているため、いくつかの隠された組み込みデバイスについては気にしません。正確なカイロです。

そして、2番目の質問は、そのような目的のための引数としてNaN値を使用しますか?ヘッダーのどこに定義するかは問題ありません。私はこの目的のためにはNaNを使用していないだろう

答えて

3

NaNは、それ自身でさえありません。したがって、それを指標として使用すると、複雑なコードやバグにつながることがあります。私はこのように使用しません。

+2

男を知っていますか、それはNaNに= NaNに... –

+0

ことを実現するために私に時間を要しました。..それが私の悩みの源だった。 –

2

- ちょうどのNaNの問題を超えて使用します(そして多くがある)し、デフォルトにリセットする関数呼び出しのAPIを追加する方が良いだろう。

1

NaNはコードで扱うには奇妙なものですが、私は確かにそれらが目的ではないライブラリを好んでいません。

編集:私が考えたもう1つの問題は、計算結果がNaNになり、引数として渡された場合、意図しない振る舞いをすることです。たとえば:!私が今まで...あなたは複雑なバグについて何を意味するか、私は奇妙なNaNのものに走った最初の時間を

MyFunc(SomeCalculation()); //if SomeCalculation() is assumed to not be NaN, 
          //this will cause unintended behavior 
関連する問題