NaN как особый аргумент - PullRequest
       16

NaN как особый аргумент

1 голос
/ 25 апреля 2009

Я пишу небольшую библиотеку, где вы можете установить диапазон; Начальная и конечная точки являются двойными. В библиотеке есть некоторые встроенные или вычисленные значения по умолчанию для этого диапазона, но как только они установлены функцией настройки диапазона, вернуться к значению по умолчанию невозможно.

Следовательно, мне нравится использовать значение NaN в качестве индикатора для использования значения по умолчанию, но я не нашел никакого стандартного определения NaN, и, читая руководство по gcc, он говорит, что есть платформы, которые не t поддержка NaN.

Мои вопросы:

Существуют ли какие-либо недавние платформы, которые не используют числа с плавающей точкой IEEE 754? Меня не волнуют некоторые скрытые встраиваемые устройства, потому что библиотека ориентирована на платформы с графическим интерфейсом, чтобы быть точным Каиром.

И второй вопрос: вы бы использовали значение NaN в качестве аргумента для такой цели? У меня нет проблем с определением его где-то в заголовке.

Ответы [ 3 ]

3 голосов
/ 25 апреля 2009

NaN не равно ни одному числу, даже самому себе. Следовательно, использование его в качестве индикатора приведет к запутанному коду или даже ошибкам. Я бы не использовал это таким образом.

2 голосов
/ 25 апреля 2009

Я бы не использовал NaN для этой цели - кроме вопроса просто , который NaN использовать (а их много), было бы лучше добавить вызов функции API для сброса на значения по умолчанию.

1 голос
/ 25 апреля 2009

С NaN довольно странно иметь дело в коде, и я, конечно, не хотел бы, чтобы библиотека использовала их в целях, для которых они не предназначены.

Редактировать: Другая проблема, о которой я только что подумал, заключается в том, что если в результате вычисления получается NaN, и оно передается в качестве аргумента, вы получите непреднамеренное поведение. Например:

MyFunc(SomeCalculation()); //if SomeCalculation() is assumed to not be NaN,
                           //this will cause unintended behavior
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...