programing

C/C++ NaN 상수(리터럴)

firstcheck 2022. 7. 28. 22:18
반응형

C/C++ NaN 상수(리터럴)

이 작업을 통해 A/S를 할당할 수 있습니까?NaN에 대해서double또는floatC/C++로요?JavaScript와 마찬가지로 다음 작업을 수행합니다.a = NaN나중에 변수가 숫자인지 확인할 수 있습니다.

주식회사,NAN에 선언되어 있다.<math.h>.

C++에서는std::numeric_limits<double>::quiet_NaN()에 선언되어 있다.<limits>.

그러나 값이 NaN인지 확인하기 위해 다른 NaN 값과 비교할 수 없습니다.대신 사용isnan()부터<math.h>C, 또는std::isnan()부터<cmath>C++로 표시됩니다.

다른 사람들이 지적한 바와 같이, 당신이 찾고 있는 것은std::numeric_limits<double>::quiet_NaN()cppreference.com 문서를 더 선호합니다.특히 이 진술이 좀 애매하기 때문에:

std::numeric_limits가 다음과 같은 경우에만 의미가 있습니다.: has_quiet_NaN == true.

그리고 이 사이트에서 이것이 무엇을 의미하는지 알아내는 것은 간단했습니다. 이 사이트의 섹션에는 다음과 같은 내용이 있습니다.

이 상수는 모든 부동소수점 유형에 대해 의미가 있으며 std::dis_iec559 == true일 경우 true임을 보증합니다.

여기서 설명한 바와 같이 만약true사용하시는 플랫폼이 지원하는IEEE 754표준.의 스레드에서는 이것이 대부분의 상황에서 해당된다는 것을 설명합니다.

이것은, C++ 의 numeric_limit 를 사용해 실행할 수 있습니다.

http://www.cplusplus.com/reference/limits/numeric_limits/

검토해야 할 방법은 다음과 같습니다.

infinity()  T   Representation of positive infinity, if available.
quiet_NaN() T   Representation of quiet (non-signaling) "Not-a-Number", if available.
signaling_NaN() T   Representation of signaling "Not-a-Number", if available.

NaN을 더블 또는 플로트에 할당하는 것이 가능합니까?

네, C99부터 (C++11)<math.h>에는 다음 기능이 있습니다.

#include <math.h>
double nan(const char *tagp);
float nanf(const char *tagp);
long double nanl(const char *tagp);

그들의 것과 같다.strtod("NAN(n-char-sequence)",0)상대편과NAN할당에 사용합니다.

// Sample C code
uint64_t u64;
double x;
x = nan("0x12345");
memcpy(&u64, &x, sizeof u64); printf("(%" PRIx64 ")\n", u64);
x = -strtod("NAN(6789A)",0);
memcpy(&u64, &x, sizeof u64); printf("(%" PRIx64 ")\n", u64);
x = NAN;
memcpy(&u64, &x, sizeof u64); printf("(%" PRIx64 ")\n", u64);

샘플 출력: (실장 상황에 따라 다름)

(7ff8000000012345)
(fff000000006789a)
(7ff8000000000000)

...변수가 숫자인지 아닌지를 확인합니다.

사용하다isnan(), std::isnan()부터<math.h>, <cmath>.

네, 포인터의 개념에 따라 int 변수에 대해 다음과 같이 수행할 수 있습니다.

int *a;
int b=0;
a=NULL; // or a=&b; for giving the value of b to a
if(a==NULL) 
  printf("NULL");
else
  printf(*a);

그것은 매우 간단하고 엄격하다.Arduino IDE에서 작동했습니다.

언급URL : https://stackoverflow.com/questions/16691207/c-c-nan-constant-literal

반응형