Pages: [1]   Go Down
Author Topic: Probleme mit IF Abfrage  (Read 368 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Jr. Member
**
Karma: 1
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
  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?
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Weil if (c = 'x') immer wahr ist.
Code:
c = 'x'
ist eine Zuweisung. Vergleichen tut man mit
Code:
if (c == 'x')
Logged

Germany
Offline Offline
Jr. Member
**
Karma: 1
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 248
Posts: 21152
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Munich/Germany
Offline Offline
God Member
*****
Karma: 11
Posts: 643
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

_______
Manfred

Pages: [1]   Go Up
Jump to: