none
For Loop Initialisierung mit Variable RRS feed

  • 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

    Mittwoch, 28. Mai 2014 08:40

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


    Mittwoch, 28. Mai 2014 09:02
    Moderator
  • 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

    Mittwoch, 28. Mai 2014 09:18

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


    Mittwoch, 28. Mai 2014 09:02
    Moderator
  • 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

    Mittwoch, 28. Mai 2014 09:18