Ich gebe dem Rest völlig Recht, den Fehler musst du selbst finden, speziell wo man dich auch schon mit der Nase draufgestossen hat.
Aber noch ein paar Erläuterungen (ohne Anspruch auf Vollständigkeit):
Warum mekkert der Compiler nicht, wenn ich folgende Schleife schreibe?
|
C-/C++-Quelltext
|
1
2
|
bool ende;
while (ende = false) { }
|
Immerhin steht in der Bedingung doch eine Zuweisung? Der Trick ist, eine Zuweisung hat ein Ergebnis! Nämlich genau das, was Rechts steht. In diesem Fall eben immer false, so dass die Schleife nie durchlaufen wird. Da ist es dann egal, ob ich meine ende Variable innerhalb der Schleife einen Wert zuweise, oder nicht.
Darum ist
|
C-/C++-Quelltext
|
1
2
|
bool ende;
while (ende = true) { }
|
auch eine Endlosschleife, weil das immer true wird.
Gemeint hast du natürlich das hier:
|
C-/C++-Quelltext
|
1
2
|
bool ende = false;
while (ende == false) { }
|
Die Idee, die Konstante auf die linke Seite zu schreiben, ist hier sehr hilfreich, weil das vom Compiler bemerkt wird. Anderereseits liest sich das immer irgendwie komisch... (meine Kolegen jammern immer, wenn ich sowas mache).
Abgesehen davon nutze ich bei Booleschen Werten auch gar nicht direkt einen Vergleich, sondern schreibe (für deinen Fall):
|
C-/C++-Quelltext
|
1
2
|
bool ende = false;
while (! ende) { }
|
Gruss,
Rainer