NaN是一个特殊的论点

时间:2009-04-24 22:40:58

标签: c

我正在写一个小库,你可以设置一个范围;起点和终点是双打。该库具有该范围的一些内置或计算默认值,但一旦它们由范围设置功能设置,就无法返回到默认值。

因此,我喜欢使用NaN值作为指标来使用默认值,但我没有找到任何NaN的标准定义,并且阅读gcc手册,它说有平台不能支持NaN。

我的问题是:

是否有最近的平台不使用IEEE 754浮点数?我不关心一些模糊的嵌入式设备,因为lib专注于具有GUI的平台,准确无误。

第二个问题是你会使用NaN值作为这个目的的论据吗?我将它定义在标题中的某些位置没有问题。

3 个答案:

答案 0 :(得分:3)

NaN不等于任何数字,甚至不等于它自己。因此,将其用作指标将导致错综复杂的代码甚至错误。我不会这样用它。

答案 1 :(得分:2)

我不会为此目的使用NaN - 除了 NaN使用的问题(并且有很多)之外,最好添加一个NaN函数调用API重置为默认值。

答案 2 :(得分:1)

在代码中处理NaNs有点奇怪,我当然不希望库使用它们不是为了它们而制作的目的。

编辑:我刚才想到的另一个问题是,如果计算结果为NaN,并且它作为参数传递,则会出现意外行为。例如:

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