Go Down

Topic: Probleme mit IF Abfrage (Read 478 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy