for(int k=0; k<6; k++)
// Möglichkeit II: innerhalb des Initialisierungsausdruckes
{
...
};
Man könnte nun aufgrund der Notation auf den Gedanken kommen, daß die zweite
Möglichkeit die bessere
sei, da nun k
eine lokale Variable sei. Letzteres ist aber gerade nicht
der Fall!
Zu beachten ist nämlich, daß die im Initialisierungsausdruck deklarierten
Variablen keine lokale Variablen sind, sondern auch
außerhalb der Schleifenkonstruktion noch bekannt sind:
cout << "k hat den Wert " << k << endl;
// OKAY: k ist auf gleicher Ebene wie for-Schleife bekannt
for (int k = 0; k < 6; k++)
cout << "k hat den Wert " << k <<
endl;
Dieses liegt daran, daß der Initialisierungsausdruck genaugenommen vor dem Eintritt in die for-Schleife ausgeführt wird. D.h. die dort stattfindenden Anweisungen finden nicht innerhalb des for-Konstruktes statt, sondern außerhalb. Die Deklaration der Variablen steht damit auf gleicher Ebene wie die for-Struktur. Und damit unterscheiden sich die obigen beiden Möglichkeiten zumindest nicht in Bezug auf den Gültigkeitsbereich der Zählvariable.