Go Down

Topic: Probleme mit IF Abfrage (Read 442 times) previous topic - next topic

Balisto

Warum funktioniert diese IF Abfrage nicht?
Es soll ein Zeichen von der Tastatur gelesen werden, es wird so lange gewartet bist entweder w oder x gedrückt wird.
Danach wird per IF entschieden was passieren soll.
Aber egal ob ich w oder x eingebe es wird immer die erste if abfrage mit x ausgeführt.

Code: [Select]

  while (c != 'w' && c != 'W' && c != 'x') {  // Warte auf Taste w
    c = keyboard.read();
  }
  if (c = 'x') {
    digitalWrite(mPin, HIGH);
    delay(1200);
    digitalWrite(mPin, LOW);
    dooropen=1;
  }

    lcd.clear();
    lcd.setCursor(0,0); // LCD Cursor auf Anfang von Zeile 0
    lcd.print("Test 2");



was mache ich falsch?

mkl0815

Weil if (c = 'x') immer wahr ist.
Code: [Select]

c = 'x'

ist eine Zuweisung. Vergleichen tut man mit
Code: [Select]

if (c == 'x')

Balisto

Wie doof von mir  :smiley-roll-blue: Habe bisher nur Delphi programmiert, daher kenne ich C noch nicht so... Danke!

uwefed

Mach Dir nicht zuviel Sorgen, das ist ein Typischer Fehler in C den wir alle schon mehrmals gemacht haben.  ;) ;)
Grüße Uwe

MaFu

Und genau aus dem Grund ist es sinnvoll die Abfrage umzudrehen.

if (c = 'x')
ist zwar von Der Programmlogik her falsch, für den Compiler stimmt es aber.

Schreibst Du hingegen
if ('x' = c)
würde der Compiler sofort meckern, weil diese Zuweisung ungültig ist. Und dann merkst Du sofort, dass Du ein = vergessen hast.
_______
Manfred

Go Up