Brauche dringend Hilfe bei Aufgabenstellung!
-
SeppJ schrieb:
Sicher?
Getestet und disassembliert auf MingW-GCC, CygWin-GCC, MSVC, PellesC, BCC32, LCC32, OpenWatcom, TCC. Reicht das?
Das würde klar dem Sprachstandard widersprechen, der hier fordert, dass i zu float wird und eben nicht double. Unter meinem Linuxsystem läuft das Programm auch tatsächlich ewig. Weiterhin ist an deiner Erklärung einiges faul, zum Beispiel setzt eine X87-FPU (und nur die kann gemeint sein, wenn das Programm unter Win läuft) intern 80-Bit ein.
-
Ich gehe mal davon aus, dass der Sprachstandard hier ein Mindestverhalten postuliert. Ansonsten wüsste ich gerne, wo ich nachschlagen kann.
-
Zumindest 32-Bit-Windows geht hier einen Sonderweg, indem die FPU auf 64 Bit Präzision (bzw. 53 Bit in MS-Speak) gesetzt wird. Und zwar - zu meinem Verdruss - jedes Mal, wenn ein Programm gestartet wird. Das ist bei Microsoft nur in Nebensätzen dokumentiert, z.B: "On NT-based systems, the FPU is set to long real precision (that is, double or 53-bit), with all exceptions masked ..." (http://msdn.microsoft.com/en-us/library/windows/hardware/ff565388).
viele grüße
ralph
-
-
rkhb schrieb:
- Ich gehe mal davon aus, dass der Sprachstandard hier ein Mindestverhalten postuliert.
Das ist der Fall (s.o.):
C90: 6.2.1.5 /2
C99/C11: 6.3.1.8 /2 (unverändert)
Jedes einigermaßen brauchbare Buch zum Thema erwähnt früher oder später, dass wenn IEEE-konforme Zwischenergebnisse benötigt werden, man am besten explizite Zuweisungen einfügt.