Должен ли я предпочесть HUGE_VAL или INFINITY?

Я задавался вопросом о точной разнице между HUGE_VAL макрос-константа и INFINITY один, который также обсуждается в этот вопрос. Кажется, что эти два функционально эквивалентны.

Есть ли какая-либо причина отдавать предпочтение одному, а не логически отличать от конечной, но огромной ценности и действительно бесконечной ценности?

В частности, сценарий использования, который у меня сейчас есть, касается типа алгоритмов, которым нужно найти максимум, и в начале они инициализируют найденный в данный момент максимум как -INFINITY, -HUGE_VAL может быть когда-нибудь предпочтительнее? Если у вас есть предложения о других случаях использования, пожалуйста, скажите им.

2

Решение

С C ++ вы должны использовать std::numeric_limits<T> классы, определенные в заголовке вместо этих макросов.
Вот пример:

double val = std::numeric_limits<double>::max();

Классы специализированы для каждого числового типа, поддерживаемого вашей реализацией, то есть char, int, long, float, double и т. Д.

Максимальное значение, данное ими, особенно полезно для поиска максимального значения, так как они в буквальном смысле являются большим значением, которое может быть представлено запрашиваемым типом.

3

Другие решения


По вопросам рекламы [email protected]