Schleifen: for-Schleife (3/9)

Zum anderen kann man die Variable(n) direkt im Initialisierungsausdruck deklarieren und definieren:

  // Möglichkeit II: innerhalb des Initialisierungsausdruckes

  for(int k=0; k<6; k++)
  {
  ...
  };

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:

  for (int k = 0; k < 6; k++)
      cout << "k hat den Wert " << k << endl;

  cout << "k hat den Wert " << k << endl;    // OKAY: k ist auf gleicher Ebene wie for-Schleife bekannt

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.