Anfängerfrage
-
for( int i = 0 ; i< 100 ; i++) { int x = i ; }
Wie oft wird x angelegt ? Ich denke nur einmal , da sonst der Variablenname mehrfach vorkommt ?
-
Kommt drauf an, wie du "anlegen" definierst. Im Sinne von Speicher allozieren ist es nicht definiert (der Compiler kann den Stack-Speicher oder ein CPU-Register verwenden oder die Schleife ganz wegoptimieren (in diesem Fall durch ignorieren)).
Im Sinne von "den Variablennamen vereinbaren" ist es 100 Mal. Das Argument mit den Namen stimmt nicht, da Variablennamen immer nur innerhalb des Blockes (inkl. aller Unterblöcke) gültig sind, in dem sie deklariert wurden.
edit: Nach Verlassen eines Blocks werden alle Variablen "zerstört", die darin deklariert wurden, d.h. der Variablenname und dazugehörige Speicherbereich sind wieder frei und bei Objekten wird, sofern vorhanden, der Destruktor aufgerufen.
-
for(int i = 0 ; i < 5 ; i++ ) { int x = 5; }
Das bedeutet doch eigentlich nichts anderes als
int x = 5; int x = 5; int x = 5; int x = 5; int x = 5;
Wundert mich irgendwie dass es keinen Compilerfehler gibt.
-
Wenn schon, dann
{ int x = 5; } { int x = 5; } ...
Und das ist korrekt.
-
blurry333 schrieb:
for(int i = 0 ; i < 5 ; i++ ) { int x = 5; }
Das bedeutet doch eigentlich nichts anderes als
int x = 5; int x = 5; int x = 5; int x = 5; int x = 5;
Wundert mich irgendwie dass es keinen Compilerfehler gibt.