.j
-
.j
-
.j
-
In deinem Code sind 'zaehler' und 'summe' nicht initialisiert, d.h. die haben irgendwelche Garbage Werte.
Ich verstehe nicht ganz wofür du die Variable 'zaehler' brauchst, du möchtest doch die alternierende harmonsiche Reihe bereichen?Hier der Code dazu:
int main(void) { int i, k; float sum; printf("Enter k: "); scanf("%d", &k); sum = 0; for ( i = 1; i <= k; ++i ) if ( i % 2 == 0 ) sum -= 1.0 / i; else sum += 1.0 / i; printf("%f\n", sum); }
*Edit
Jetzt ist mir gerade klar geworden wofür du die Variable 'zaehler' verwendest
-
.j
-
Juli84 schrieb:
... warum initialisiert man sum = 0?
Bevor man mit einer Variablen rechnet, sollte sie einen definierten Wert haben.
Wenn du eine lokale Variable nicht initialisierst, kann sie jeden möglichen Wert haben.
Das
sum -= 1.0 / i;
steht ja fürsum = sum - 1.0 / i;
Da steht sum auf der rechten Seite vom =Jetzt überleg selber was rauskommt, wenn sum irgendeinen Wert hat.
-
.j
-
Juli84 schrieb:
... du meinst, wenn man das
sum = 0;
weglassen würde?
Ja.
-
.j
-
Man soll auch immer nach links und rechts schauen, wenn man über die Strasse geht.
Ich bin jetzt 10 mal rüber gegangen und mir ist nichts passiert.Ist das jetzt immer so oder liegt es evtl an der Uhrzeit und/oder an der kleinen Sackgasse in der ich das gemacht habe?
Es muss kein falscher Wert rauskommen, es kann ein falscher Wert rauskommen.
Das hängt davon ab, welche Werte sich in dem Speicherbereich der Variablen beim Programmstart befinden.
Du hast Glück gehabt, dass da 0 drin stand.
Du hast Pech gehabt, dass dir der Fehler dadurch nicht aufgefallen ist.Lokale Variablen werden (in C) nicht standardmäßig initialisiert.
-
.j
-
DirkB schrieb:
Lokale Variablen werden (in C) nicht standardmäßig initialisiert.
Eine (implizite 0-)Initialisierung hängt nicht von der Sichtbarkeitsstufe der Variablendefinition ab, sondern von der zugewiesenen (explizit oder implizit) Speicherklasse static. Global definierte Variablen sind hinsichtlich der Speicherklasse immer (implizit) static, ein explizites static bezieht sich hier nicht auf die Speicherklasse sondern auf die Sichtbarkeitsstufe (Quelldatei-weit).