Frage zur While Schleife
-
Hi leute,
ich habe ein Problem? Ich kann den Fehler nicht erkennen.
int found =0; int Array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8 ,9}; int a = 3; while ((found != 1) || (fel != ( LAST_ELEMENT) || (INVALID)) || (i<10)) { if ( Array[i] == a) { found =1; fel = NO_ERROR; } i++; }
Die Schleife bricht nicht ab, wenn
found == 1
ist;
Das ist nur ein Beispiel, der Sinn soll keine Rolle spielenIm Voraus Vielen Dank
Lena
-
fanbjs schrieb:
Die Schleife bricht nicht ab, wenn
found == 1
ist;
Muss sie ja auch nicht. Du hast ja || geschrieben. Damit läuft die Schleife, solange mindestens einer der Ausdrücke wahr ist. Somit ist wohl der andere Ausdruck wahr.
Das hier:
(fel != ( LAST_ELEMENT) || (INVALID))
musst du übrigens "aussschreiben". So macht das nicht das, was du erwartest.
-
Erstens: Die Oder-Bedingung wird erst erfüllt, wenn beide Teile zutreffen - du benötigst vermutlich ein UND (&&) stattdessen.
Zweitens: Das
(fel != ( LAST_ELEMENT) || (INVALID))
ist Unsinn - du kannst einen Wert auf diese Weise nicht mit zwei möglichen Zahlen vergleichen (LAST_ELEMENT||INVALID wird zuerst berechnet und fel mit dieser Verknüpfung - vermutlich konstant 1 - verglichen). Du benötigst hier zwei Vergleichefel!=LAST_ELEMENT && fel!=INVALID