C-Kurs/forschleife/Musterlösung: Unterschied zwischen den Versionen
< C-Kurs | forschleife
Nion (Diskussion | Beiträge) (musterlösung) |
Mutax (Diskussion | Beiträge) K (Kategorie) |
||
Zeile 4: | Zeile 4: | ||
Um diesen Fehler zu beheben sollte die for-Schleife for(i=0; i<sizeof(a)/sizeof(int); i++) lauten. | Um diesen Fehler zu beheben sollte die for-Schleife for(i=0; i<sizeof(a)/sizeof(int); i++) lauten. | ||
+ | |||
+ | [[Kategorie: Veranstaltungen der Freitagsrunde]] | ||
+ | [[Kategorie: CKurs Aufgaben]] |
Version vom 27. Februar 2010, 15:17 Uhr
Das Programm terminiert nicht. Die for-Schleife läuft von 0 bis index sizeof(a). sizeof(a) ist aber nicht 8, sondern 32 (sizeof(int) * 8). Das bedeutet, dass die schleife a[0] bis a[32] mit 0 beschreibt. Da i auf dem Stack for dem Array liegt, wird nun der Wert von i mit 0 ebenfalls überschrieben und die Abbruchbedingung der for-Schleife trifft nicht ein.
Normalerweise würde <= 8 reichen, allerdings passt das durch den Aufbau des Stacks nicht ganz, weswegen wir uns fuer einen größeren Wert (in dem Fall sizeof(int) für mehr Verwirrung) entschieden haben. 9 sollte auch gehen.
Um diesen Fehler zu beheben sollte die for-Schleife for(i=0; i<sizeof(a)/sizeof(int); i++) lauten.