Я был удивлен количеством объектов на C++ для представления тихого значения NaN. Я нашел три стандартный способ:std :: numeric_limits :: quiet_NaN() vs. std :: nan() vs. NAN
std::numeric_limits<T>::quiet_NaN()
- общий, и я думал, что это было избранникstd::nan
,std::nanf
,std::nanl
- семейство функций принятияconst char*
аргументаNAN
- макрос «, который оценивает на тихой не-число»
Каждый из них были введены в C++ 11. У меня есть несколько вопросов относительно этого:
- Что
const char*
аргумента стоять вstd::nan
и сотрудничестве? Как он используется? - Почему, черт возьми, нам нужно добавить макрос в C++ 11, хотя мы уже добавили для этого общий класс признаков? (Является ли он совместимым с C?)
- Какой именно я должен использовать по умолчанию? (Я полагаю, что это первый)
Символ используется для указания того, что Нан вы хотите. Интерпретация неуточненна (iirc), но в моем ящике linux байты используются для инициализации «полезной нагрузки» Nan, предназначенной в первую очередь для диагностики того, откуда происходят определенные Nans. –