Floating-Point Schleife
-
Hallo,
ich bin Neuling in C-Programmierung und überhaupt in Programmierung und möchte zwei kurze Fragen stellen und zwar: ich habe folgendes C-programm
#include <stdio.h> #include <float.h> int main (int argc, char **argv) { float i; for (i = 0; i < FLT_MAX; i++) { printf("%f\n", i); } }
- wie lange wird diese Schleife ausgeführt? Ich habe recherchiert, dass FLT_Max = 3.402823466e+38F. Also die Schleife wird 3.402823466e+38F-mal ausgeführt??
-ich muss das anhand von 32-bit breiten IEEE-Floating-Point Zahlen demonstrieren. Was kann in dem obigen Code hinzufügen, damit ich das tun kann? Danke im voraus,
Zunzum
-
Die Schleife läuft endlos, denn irgendwann (genauer: so um 2^24 herum) wird eine Addition von 1 nichts mehr am Wert deines Zählers ändern.
-ich muss das anhand von 32-bit breiten IEEE-Floating-Point Zahlen demonstrieren. Was kann in dem obigen Code hinzufügen, damit ich das tun kann? Danke im voraus,
ZunzumWas demonstrieren? Was auch immer: Du kennst dich offenbar überhaupt nicht mit der Theorie von Fließkommazahlen aus. Da musst du ganz dringend zumindest die Grundlagen lernen, bevor du irgendetwas damit tun kannst.
-
Danke erstmal für die Antwort!
Also das kann man irgendwie demnstrieren, denn in meiner Fragestellung steht Folgendes:
Wie oft wird diese Schleife ausgeführt werden? Warum? Demonstrieren Sie anhand von 32-bit breiten IEEE-Floating-Point
Zahlen!
Und das wurde von einem Professor geschrieben, von daher müsste das irgendwie gehen
-
edit: Der hier ist noch schöner:
http://ideone.com/C9KcV
-
zunzum schrieb:
Und das wurde von einem Professor geschrieben, von daher müsste das irgendwie gehen
Vielleicht will der Professor auch nur, dass du rausfindest warum die Schleife Endlos läuft.
Da musst du dich wohl mit dem IEEE-Floating-Point Format auseinander setzen.
-
danke nochmal SeppJ