Zitat von
Xong:
In C++ ist sogar folgendes möglich:
Code:
for(int i = 0; i < 10; i++) {
for(int i = 0; i < 10; i++) {
// Mach was!
}
}
Wer in meinem Team sowas schreibt, kriegt ne Standpauke zu hören
Mal abgesehen davon, dass i ein eher unglücklicher Name für eine Schleifenvariable ist (spätestens bei verschachtelten Schleifen) gehört so eine Fehlerquelle definitiv nicht in Code gegossen. Aber die Sprache erlaubt sie, ja, was in so einem offensichtlichen Fall eher schlecht ist, aber an vielen anderen Stellen hilfreich, denn davon abgesehen ist es in C++ gängig, Variablen erst zu deklarieren (und damit gegebenenfalls zu initialisieren), wenn sie wirklich benötigt werden. Die for-Schleifenvariable ist ein schönes Beispiel dafür. Was juckt mich außerhalb der Schleife das i? Die meisten Sprachen, die die Deklaration außerhalb fordern, garantieren trotzdem nicht einen bestimmten Wert für die Variable, wenn die Schleife verlassen wird.
@Rainer:
Wie DMW schon sagte: es gibt im C++-Standard überhaupt keinen Header <iostream.h>. Der Name des Headers ist standardkonform <iostream>. Ebenso, wie z.B. die stdio von C in C++ nicht als <stdio.h>, sondern als <cstdio> eingebunden wird. Also macht VC++ das richtig. <iostream.h> gab es nur in der Übergangszeit, in der der Standard noch nicht so weit war. Zu dem Zeitpunkt war der Unterschied (laut Standard), dass die Standardbibliothek bei <iostream.h> global ist, bei <iostream> hingegen im Namespace std liegt.