Oprócz makra NAN, C99 ma dwa sposoby generowania wartości NaN dla liczby zmiennoprzecinkowej, funkcji nanf(const char *tagp)
i strtof("NAN(char-sequence)")
.Co to jest argument "sekwencji znaków" dla funkcji generujących NaN?
Obie metody generowania NaN przyjmują opcjonalny argument łańcuchowy (* tagp w nanf()
i sekwencja znaków w metodzie strtof). Co dokładnie robi ten argument łańcuchowy? Nie byłem w stanie znaleźć konkretnych przykładów tego, jak z niego skorzystasz. Od cppreference.com mamy:
Nan wywołania ("ciąg") jest równoważny wywołaniu strtod ("NAN (ciąg)", (char **) NULL);
Wywołanie nan ("") jest równoważne wywołaniu strtod ("NAN()", (char **) NULL);
Wywołanie nan (NULL) jest równoważne wywołaniu strtod ("NAN", (char **) NULL);
I nan(3) mówi:
Funkcje te zwracają reprezentację (określany przez tagp) o spokojnej NaN. [snip] Tagp tagu jest używany w nieokreślony sposób. W systemach IEEE 754 istnieje wiele reprezentacji NaN, a tag-tag wybiera jeden.
To tak naprawdę nie powie mi, co mogę użyć dla ciągu tagów lub dlaczego kiedykolwiek chciałbym go użyć. Czy istnieje lista prawidłowych opcji dla tego łańcucha znaczników, a jaka byłaby przyczyna użycia jednego z domyślnych nanf(NULL)
?
strona cppreference jesteś związany jest konkretny przykład – Cubbi
Wow. Jak to przegapiłem. Chociaż nadal nie jestem pewien, jaka jest różnica między tymi dwoma reprezentacjami w przykładzie. – mshildt