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.