Я задавался вопросом о точной разнице между HUGE_VAL
макрос-константа и INFINITY
один, который также обсуждается в этот вопрос. Кажется, что эти два функционально эквивалентны.
Есть ли какая-либо причина отдавать предпочтение одному, а не логически отличать от конечной, но огромной ценности и действительно бесконечной ценности?
В частности, сценарий использования, который у меня сейчас есть, касается типа алгоритмов, которым нужно найти максимум, и в начале они инициализируют найденный в данный момент максимум как -INFINITY
, -HUGE_VAL
может быть когда-нибудь предпочтительнее? Если у вас есть предложения о других случаях использования, пожалуйста, скажите им.
С C ++ вы должны использовать std::numeric_limits<T>
классы, определенные в заголовке вместо этих макросов.
Вот пример:
double val = std::numeric_limits<double>::max();
Классы специализированы для каждого числового типа, поддерживаемого вашей реализацией, то есть char, int, long, float, double и т. Д.
Максимальное значение, данное ими, особенно полезно для поиска максимального значения, так как они в буквальном смысле являются большим значением, которое может быть представлено запрашиваемым типом.