Seite 1 von 1
[C] f*f (unendlich)
Verfasst: Do Aug 14, 2014 10:37 pm
von AlexImperator
Code: Alles auswählen
#include <stdio.h>
int main ()
{
int f=2;
for(;;)
{
f=f*f;
printf("%d\n",f);
}
return 0;
}
ich seh das problem nicht aber ich bekomme nur Nullen :/
Code: Alles auswählen
//soll bis ins unendliche 2er potenzen ausgeben
#include <stdio.h>
int main ()
{
int f=1;
for(;;)
{
f=f*2;
printf("%d\n",f);
}
return 0;
}
da das gleiche problem
Danke in Voraus

Re: [C] f*f (unendlich)
Verfasst: Fr Aug 15, 2014 12:47 am
von Xin
Beim ersten Listing solltest Du %f statt %d nehmen und beim zweiten Listing solltest Du neu kompilieren - das sollte funktionieren.

Re: [C] f*f (unendlich)
Verfasst: Fr Aug 15, 2014 11:32 am
von AlexImperator
sry wenn ich jz ganz blöd frag: Was meinst du mit Listing
meinst du ich soll die zeile so verändern?
ich weiß auch nicht was du dann mit
beim zweiten Listing solltest Du neu kompilieren
so hab ich das verstanden:
Code: Alles auswählen
for(;;)
{
f=f*2;
printf("%d\n",f);
kompilier dich neu
}
sry hab echt keine ahnung

Re: [C] f*f (unendlich)
Verfasst: Fr Aug 15, 2014 11:41 am
von Xin
AlexImperator hat geschrieben:sry wenn ich jz ganz blöd frag: Was meinst du mit Listing
Ein Listing ist ein anderes Wort für Quelltext oder Ausschnitt eines Quelltextes.
AlexImperator hat geschrieben:
meinst du ich soll die zeile so verändern?
Beim ersten Listing ja.
AlexImperator hat geschrieben:
ich weiß auch nicht was du dann mit
beim zweiten Listing solltest Du neu kompilieren
so hab ich das verstanden:
Code: Alles auswählen
for(;;)
{
f=f*2;
printf("%d\n",f);
kompilier dich neu
}
sry hab echt keine ahnung

Wie erzeugst Du aus Deinem Quelltext ein lauffähiges Programm?
Re: [C] f*f (unendlich)
Verfasst: Fr Aug 15, 2014 12:22 pm
von AlexImperator
aso
ja hab beides gemacht bekomm beim ersten immer 0.00000
der 2. tipp hat auch nicht geholfen hatte es ohnehin schon 3x kompiliert immer noch nur Nullen
Re: [C] f*f (unendlich)
Verfasst: Fr Aug 15, 2014 1:12 pm
von Xin
AlexImperator hat geschrieben:aso
ja hab beides gemacht bekomm beim ersten immer 0.00000
der 2. tipp hat auch nicht geholfen hatte es ohnehin schon 3x kompiliert immer noch nur Nullen
Okay... nehmen wir den Quelltext mit int und %d. Der kann nicht nur Nullen ausgeben. Das gibt der Quelltext nicht her, der muss - da f = 1 ist, und f anschließend verdoppelt wird und dann ausgegeben wird, also schonmal 2 ausgeben. Und das tut er auch.
Dann kommen wir kurz zum Kommentar:
Computer kennen keine Unendlichkeit - schonmal gar nicht bei Integers.
Ändern wir den Quelltext ein wenig:
Code: Alles auswählen
#include <stdio.h>
int main ()
{
int f=1;
for(;f!=0;) // <- Änderung
{
f=f*2;
printf("%d\n",f);
}
return 0;
}
Die Schleife bricht ab, wenn Nullen kommen. Dann siehst Du auch mal, was vor den Nullen kommt.
Dann schau Dir das hier an:
Zahlendarstellung.