Benutzer mit den meisten Antworten
For Loop Initialisierung mit Variable

Frage
-
Hallo zusammen,
ich stehe vor einem Problem mit einer For - Loop, welche ich mit einer Variable initialisieren will.
Man betrachte dazu folgenden C Code:
int main(void) { int startpoint = 401, i; for (i = startpoint; i < startpoint+7; i++) { printf("%d\n", i); } return 0; }
Die Ausgabe dazu ist wie erwartet:
401 402 403 404 405 406 407
Das ganze nun in C# (wie es meines Erachtens aussehen muss):
startPoint = 401;
for (int i = startPoint; i < startPoint + 7; i++) { Console.Write("{0},",i); }
Die Ausgabe dazu ist eine Endlosschleife, die nichts mit dem erwarteten Ergebnis (so wie bei dem C Programm) zu tun hat. Ich verstehe nicht warum. Wo liegt der Denkfehler?
Danke für deine Hilfe.
Gruß El Jobso
Antworten
-
Hi,
wenn das wirklich alles ist, was bei dir innerhalb der Schleife steht, liegt der Fehler eher woanders.
Hast Du denn mal einen Breakpoint auf Console.Write ... gesetzt und dort geschaut, was genau in i steht?
Ich hab deinen Code kopiert, läuft genau wie erwartet. (Ich habe lediglich bei der Deklaration von startPoint noch ein int vorangestellt, das fehlte bei dir)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 28. Mai 2014 09:03
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Mittwoch, 28. Mai 2014 14:10
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 10. Juni 2014 13:30
-
Hey,
ok, ich habe den Fehler gefunden. In meinem angefügten C# Code hat eine Zeile gefehlt. (Ich hatte den falschen Block kopiert).
for (int i = startPoint; i < startPoint + 7; i++) { Console.Write("{0},",i); ++startPoint; }
Nun ist mir auch klar, wo der Fehler ist. Ich verschiebe durch das Hochzählen von startPoint die Abbruchbedingung ins Unendlich, wodurch eine Endloschleife entsteht.
In MATLAB wird das anders gehandhabt. Das Verändern der einzelnen Parameter in der For Loop, ist nachträglich nicht möglich.
for k=startPoint:startPoint+7 startPoint = startPoint + 1; end
Das startPoint = startPoint + 1 hat keine Einfluss auf die Abbruchbedigung.
Danke für deine gedanklichen Anregungen.
Gruß El Jobso
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Mittwoch, 28. Mai 2014 14:10
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 10. Juni 2014 13:30
Alle Antworten
-
Hi,
wenn das wirklich alles ist, was bei dir innerhalb der Schleife steht, liegt der Fehler eher woanders.
Hast Du denn mal einen Breakpoint auf Console.Write ... gesetzt und dort geschaut, was genau in i steht?
Ich hab deinen Code kopiert, läuft genau wie erwartet. (Ich habe lediglich bei der Deklaration von startPoint noch ein int vorangestellt, das fehlte bei dir)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 28. Mai 2014 09:03
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Mittwoch, 28. Mai 2014 14:10
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 10. Juni 2014 13:30
-
Hey,
ok, ich habe den Fehler gefunden. In meinem angefügten C# Code hat eine Zeile gefehlt. (Ich hatte den falschen Block kopiert).
for (int i = startPoint; i < startPoint + 7; i++) { Console.Write("{0},",i); ++startPoint; }
Nun ist mir auch klar, wo der Fehler ist. Ich verschiebe durch das Hochzählen von startPoint die Abbruchbedingung ins Unendlich, wodurch eine Endloschleife entsteht.
In MATLAB wird das anders gehandhabt. Das Verändern der einzelnen Parameter in der For Loop, ist nachträglich nicht möglich.
for k=startPoint:startPoint+7 startPoint = startPoint + 1; end
Das startPoint = startPoint + 1 hat keine Einfluss auf die Abbruchbedigung.
Danke für deine gedanklichen Anregungen.
Gruß El Jobso
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Mittwoch, 28. Mai 2014 14:10
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 10. Juni 2014 13:30