Eine for - Schleife erhällt eigenen Umgebung ?

Hi.
Stimmt das ?

Für Funktionen bin ich das ja gewohnt, aber nicht für Schleifen.
Bei uns in der Vorlesung hies es:

Eine for - Schleife mit dem Zähler i wird in C in einer eigenen Umgebung ausgeführt.
Die Variable i gibt es im Rest der Funktion nicht.

Na da war ich mistrauisch und überrascht als es tatsächlich der Fall war.
Ist das denn in ein paar anderen Programmiersprachen auch der Fall ?

Zumindest in PHP und Perl ist das nicht so.

Gruß Sebastian

Für Funktionen bin ich das ja gewohnt, aber nicht für
Schleifen.

Variablen stehen nur in dem Code-Block zur Verfügung in dem du sie deklarierst, das ist unabhängig davon was das ist (if, for etc.).

Eine Variable die im Kopf der for-Schleife deklariert wird fällt auch in den Block (das hängt damit zusammen wie der Compiler die Schleife umsetzt).

Du kannst aber natürlich den Zähler auch vorher deklarieren:

int i = 0;
for( ; i

Hi.
Stimmt das ?

Für Funktionen bin ich das ja gewohnt, aber nicht für
Schleifen.
Bei uns in der Vorlesung hies es:

Eine for - Schleife mit dem Zähler i wird in C in einer
eigenen Umgebung ausgeführt.
Die Variable i gibt es im Rest der Funktion nicht.

Na da war ich mistrauisch und überrascht als es tatsächlich
der Fall war.
Ist das denn in ein paar anderen Programmiersprachen auch der
Fall ?

Zumindest in PHP und Perl ist das nicht so.

Im C++ Standard steht, dass

for ( for-init-statement
conditionopt ; expressionopt ) statement

äquivalent zu folgendem Ausdruck ist

{
for-init-statement
while ( condition ) {
statement
expression ;
}
}

Im Prinzip ist for(…) nur eine andere Schreibweise für eine while-Schleife. Ich vermute in ANSI C eine ähnliche Bedeutung.

Markus

Danke :smile: habs kapiert. Gruß Sebastian :smile:
Gruß Sebastian :smile:

Nicht in VC++
mußte erst kürzlich erstaunt feststellen, daß dies in VC++ eben nicht so ist. dort ist die zählervariable auch außerhalb der for-schleife gültig.

gruß tobias