Compartilhar via


isnan, _isnan, _isnanf

Testa se um valor de ponto flutuante é um NaN ("Não é um número").

Sintaxe

int isnan(
   /* floating-point */ x
); /* C-only macro */

int _isnan(
   double x
);

int _isnanf(
   float x
); /* x64 only */

template <class T>
bool isnan(
   T x
) throw(); /* C++ only */

Parâmetros

x
O valor de ponto flutuante a ser testado.

Valor retornado

Em C, a isnan macro e as _isnan funções e _isnanf retornam um valor diferente de zero se o argumento x for um NaN; caso contrário, elas retornam 0.

Em C++, a isnan função de modelo retorna true se o argumento x for um NaN; caso contrário, ela retorna false.

Comentários

Como um valor NaN não se compara como igual a si mesmo ou a qualquer outro valor NaN, para detectar um, você deve usar uma dessas funções ou macros. Um NAN é gerado quando o resultado de uma operação de ponto flutuante não puder ser representado no formato de ponto flutuante IEEE-754 para o tipo especificado. Para obter informações sobre como um NaN é representado para saída, consulte printf.

Quando compilada como C++, a isnan macro não é definida e uma isnan função de modelo é definida. Ele se comporta da mesma maneira que a macro, mas retorna um valor de tipo bool em vez de um inteiro.

As funções _isnan e _isnanf são específicas da Microsoft. A função _isnanf só está disponível quando compilada para x64.

Requisitos

Rotina Cabeçalho necessário (C) Cabeçalho necessário (C++)
isnan, _isnanf <math.h> <math.h> ou <cmath>
_isnan <float.h> <float.h> ou <cfloat>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Confira também

Suporte matemático e de ponto flutuante
fpclassify
_fpclass, _fpclassf
isfinite, _finite, _finitef
isinf
isnormal