Variablen vor for-Schleife deklarieren?



  • Was ist besser?

    a)

    for(int i = 0; i < 123; ++i)
    	for(int j = 0; j < 123; ++j)
    		DoStuff();
    

    b)

    int i, j;
    for(i = 0; i < 123; ++i)
    	for(j = 0; j < 123; ++j)
    		DoStuff();
    

    An der ersten Variante stört mich, dass j bei jedemdurchlauf der ersten Schleife neu definiert wird, oder optimiert der Compiler das weg?



  • Das Definieren einer Variable erledigt der Compiler einmal für die gesamte Funktion (nachzählen, wieviele Variablen im Bestfall benötigt werden und einen entsprechend großen Stack-Block belegen), die Initialisierung wirst du nicht vermeiden können.

    Und afaik ist der einzige Unterschied zwischen beiden Varianten die Frage, wie weit die Zählvariablen sichtbar sind.



  • Unser Softwareentwicklungslehrer hat uns immer geprdeigt in C die Variablen vor dem Schleifendurchlauf anzulegen... weil die Schleifeninterne-Deklaration wohl damals nicht vollen allen C-Compilern anerkannt wurde...



  • Ja und wir sind hier nicht im C sondern C++ Forum.
    In C++ soll man alle Variablen so lokal wie möglich halten.


Anmelden zum Antworten