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


  • Mod

    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,
    Zunzum

    Was 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 😉


  • Mod

    http://ideone.com/7TyDQ

    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 🙂
    👍


Anmelden zum Antworten