Namespaces
Variants

HUGE_VALF, HUGE_VAL, HUGE_VALL

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
HUGE_VALF HUGE_VAL HUGE_VALL
(C++11) (C++11)
(C++11)
(C++11)
헤더 파일에 정의됨 <cmath>
#define HUGE_VALF /* implementation defined */
(C++11 이후)
#define HUGE_VAL  /* implementation defined */
#define HUGE_VALL /* implementation defined */
(C++11 이후)

매크로 HUGE_VALF , HUGE_VAL HUGE_VALL 은 오버플로우 발생 시 부동 소수점 함수 및 연산자가 반환하는 값과 비교 시 동일한 양의 부동 소수점 상수 표현식으로 확장됩니다 ( math_errhandling 참조).

상수 설명
HUGE_VALF 오버플로우를 나타내는 양의 float 표현식으로 확장됨
HUGE_VAL 오버플로우를 나타내는 양의 double 표현식으로 확장되며, float 로 표현 가능하지 않을 수 있음
HUGE_VALL 오버플로우를 나타내는 양의 long double 표현식으로 확장되며, float 또는 double 로 표현 가능하지 않을 수 있음

부동소수점 무한대를 지원하는 구현에서, 이 매크로들은 항상 각각 float , double , 그리고 long double 의 양의 무한대로 확장됩니다.

참고 사항

부동 소수점 무한대를 지원하지 않는 구현체에서, 이러한 매크로들은 각각 해당 타입의 최대 유한 숫자로 확장됩니다.

C++98은 수학 함수의 float long double 오버로드를 추가했습니다. float 오버로드가 오버플로를 나타내기 위해 HUGE_VAL 을 반환할 수 없다는 문제가 있습니다. 왜냐하면 이 매크로가 float 로 표현 가능하다는 보장이 없기 때문입니다.

LWG 이슈 357 이 이 문제를 해결하기 위해 제기되었습니다. LWG는 C99에도 동일한 문제가 있음을 발견했으며( float long double 오버로드도 C99에서 추가됨), C99가 이 문제를 해결하기 위해 새로운 매크로 HUGE_VALF HUGE_VALL 를 도입했습니다. 따라서 해당 이슈는 종결되었으며 C99의 해결책이 C++11에서 채택되었습니다.

참고 항목

(C++11)
양의 무한대로 평가되거나 float 가 오버플로우되도록 보장된 값
(매크로 상수)
C 문서 for HUGE_VAL