Komische Deklaration einer Schleifenvariable



  • Hallo.
    Ich sehe folgendes immer wieder:

    int i = 0;
    for (; i < 20; i++)
    {
    }
    

    Ist das eine persönliche Vorliebe des Programmierers oder hat das irgendeinen näheren Sinn?
    Ich find's eher negativ da sich somit der Scope der Variable automatisch vergrößert.

    Gruß



  • In dem Fall kann man nach der Schleife noch auf die Variable i zugreifen.



  • Jop, stimmt, aber genau das wird nie getan.

    Gruß



  • Wenns nicht getan wird, dann macht es keinen Sinn.



  • Das ist eigentlich das gleiche wie

    for (int i = 0; i < 20; i++)
    {
    }
    

    Allerdings kann es auch erwünscht sein, dass die Variable auch außerhalb der Schleife noch gültig ist. z.B. Wenn man den wert hinterher noch abfragen will:

    int i = 0;
    for (; i < 20; i++)
    {
        if(WasAuchImmer)break;
    }
    // Hier kann man prüfen, ob die Schleife vorzeitig verlassen wurde:
    if(i!=20){/*Schleife wurde vorzeitig verlassen*/}
    

    Allerdings sollte man den Gültigkeitsbereich von Variablen nicht unnötig groß machen.

    MfG, Jochen


  • Administrator

    theliquidwave schrieb:

    Jop, stimmt, aber genau das wird nie getan.

    In C89 war sowas nötig, da man die Variablen als erstes in der Funktion deklarieren musste. Gibt Leute, welche das auch anderswo weiterhin betreiben, obwohl es gar nicht mehr nötig ist.

    Grüssli



  • Okay, Dankeschön 😃

    Gruß


Log in to reply