Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich muß ein Java-Programm nach C übersetzen (genauer Assembler).
Frage: In Java gibt es ja den Zahlenwert NaN (z.b. acos(1.2))
Wie kann man in C abfragen, ob eine Berechnung etwas nicht existentes geliefert hat.
Operations involving infinities produce results obeying traditional
mathematical conventions. NaNs have no mathematical interpretation. Their
encoding permits a variable diagnostic information field. They may be used to
indicate uninitialized variables and can be produced by certain invalid
operations.
Wenn du das Programm in Assembler brauchst, warum fragst du dann nach C Code? Oder willst du etwa den Assembler Code weiterverwenden den der C Compiler generiert?
Leroy42 hat gesagt.:
Gibt's für (ANSI) C auch sowas ähnliches wie die Java API oder die JLS wo ich
derlei Fragen selbst heraussuchen kann?
Nein - zumindest nichts vergleichbares. Auch ist es in C nicht üblich "JavaDoc" Kommentare und Tools zu verwenden. Ein kostenloses und sehr gutes Buch zu C findest du aber online auf http://www.pronix.de.
Eine Referenz der GNU libc findet sich auf http://www.gnu.org/software/libc/manual/.
Leroy42 hat gesagt.:
if (value == NAN) mit inkludieren einer entsprechenden Header-Datei?
Exceptions werden in C ja nicht geworfen.
Nun ja - Exceptions gibt es auch in C...
in C wird ein Argumentfehler (domain error) entweder in erno angezeigt - d.h. erno wird auf EDOM gesetzt (definiert in errno.h) oder aber durch eine Fließkomma-Ausnahme. Das Verhalten steuert math_errhandling. Ist es auf MATH_ERRNO gesetzt, dann wird erno zum anzeigen des Fehlers genutzt, enthält sie MATH_ERREXCEPT wird eine Fließkomma-Ausnahme ausgelöst.
C99 definiert zudem das Funktions-Makros isnan() und das Makro NAN (in math.h). Möchtest du diese nutzen musst du darauf achten dem Compiler auch mitzuteilen das du den C99 Standard nutzen möchtest (beim gcc mit -std=c99).
JavaFred hat gesagt.:
Da NaN die einzige "Zahl" ist, die ungleich jeder anderen Zahl ist, kannst Du auch einfach schreiben:
Solche Annahmen sollte man in C grundsätzlich nicht treffen. Zudem sollte man alles was man in Java, z.B. über NaN, gelernt hat nicht Blind auf C übertragen.
Wenn du das Programm in Assembler brauchst, warum fragst du dann nach C Code? Oder willst du etwa den Assembler Code weiterverwenden den der C Compiler generiert?