Namespaces
Variants

std:: isunordered

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)
(C++11)
(C++11)
isunordered
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
헤더 파일에 정의됨 <cmath>
(1)
bool isunordered ( float x, float y ) ;

bool isunordered ( double x, double y ) ;

bool isunordered ( long double x, long double y ) ;
(C++11 이후)
(C++23 이전)
constexpr bool isunordered ( /* floating-point-type */ x,
/* floating-point-type */ y ) ;
(C++23 이후)
헤더 파일에 정의됨 <cmath>
template < class Arithmetic1, class Arithmetic2 >
bool isunordered ( Arithmetic1 x, Arithmetic2 y ) ;
(A) (C++11 이후)
(C++23부터 constexpr)
1) 부동 소수점 숫자 x y 가 비순서(unordered)인지, 즉 하나 또는 둘 모두 NaN이므로 서로 의미 있게 비교할 수 없는지 판단합니다. 라이브러리는 매개변수 x y 의 타입으로 모든 cv-unqualified 부동 소수점 타입에 대한 오버로드를 제공합니다. (C++23부터)
A) 추가적인 오버로드들이 다른 모든 산술 타입 조합에 대해 제공됩니다.

목차

매개변수

x, y - 부동 소수점 또는 정수 값

반환값

true 만약 x 또는 y 중 하나가 NaN이면, false 그렇지 않으면.

참고 사항

추가 오버로드는 반드시 (A) 와 정확히 동일하게 제공될 필요가 없습니다. 이들은 단지 첫 번째 인수 num1 과 두 번째 인수 num2 에 대해 다음을 보장할 수 있을 만큼 충분하기만 하면 됩니다:

  • num1 또는 num2 long double 타입을 가지는 경우, std :: isunordered ( num1, num2 ) 는 다음 코드와 동일한 효과를 가집니다: std :: isunordered ( static_cast < long double > ( num1 ) ,
    static_cast < long double > ( num2 ) )
    .
  • 그렇지 않고 num1 및/또는 num2 double 또는 정수 타입을 가지는 경우, std :: isunordered ( num1, num2 ) 는 다음 코드와 동일한 효과를 가집니다: std :: isunordered ( static_cast < double > ( num1 ) ,
    static_cast < double > ( num2 ) )
    .
  • 그렇지 않고 num1 또는 num2 float 타입을 가지는 경우, std :: isunordered ( num1, num2 ) 는 다음 코드와 동일한 효과를 가집니다: std :: isunordered ( static_cast < float > ( num1 ) ,
    static_cast < float > ( num2 ) )
    .
(C++23 이전)

num1 num2 이 산술 타입을 가지는 경우, std :: isunordered ( num1, num2 ) 는 다음 코드와 동일한 효과를 가집니다: std :: isunordered ( static_cast < /*common-floating-point-type*/ > ( num1 ) ,
static_cast < /*common-floating-point-type*/ > ( num2 ) )
, 여기서 /*common-floating-point-type*/ num1 num2 의 타입들 사이에서 가장 높은 부동소수점 변환 순위 와 가장 높은 부동소수점 변환 하위 순위 를 가지는 부동소수점 타입이며, 정수 타입 인수들은 double 과 동일한 부동소수점 변환 순위를 가진 것으로 간주됩니다.

가장 높은 순위와 하위 순위를 가지는 부동소수점 타입이 존재하지 않는 경우, 오버로드 해결 은 제공된 오버로드들 중에서 사용 가능한 후보를 결과로 내지 않습니다.

(C++23 이후)

예제

#include <cmath>
#include <iostream>
#define SHOW_UNORDERED(x, y) \
    std::cout << std::boolalpha << "isunordered(" \
              << #x << ", " << #y << "): " \
              << std::isunordered(x, y) << '\n'
int main()
{
    SHOW_UNORDERED(10, 01);
    SHOW_UNORDERED(INFINITY, NAN);
    SHOW_UNORDERED(INFINITY, INFINITY);
    SHOW_UNORDERED(NAN, NAN);
}

출력:

isunordered(10, 01): false
isunordered(INFINITY, NAN): true
isunordered(INFINITY, INFINITY): false
isunordered(NAN, NAN): true

참고 항목

(C++11)
주어진 부동소수점 값을 분류합니다
(함수)
(C++11)
주어진 숫자가 NaN인지 확인합니다
(함수)
C documentation for isunordered