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

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

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

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


person Svalorzen    schedule 16.09.2014    source источник


Ответы (1)


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

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

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

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

person rems4e    schedule 16.09.2014
comment
Это правда, и я думаю, что использование одного или другого не будет иметь никакого значения в реальном использовании. - person rems4e; 16.09.2014