Forum: Mikrocontroller und Digitale Elektronik If Bedingung negieren klappt nicht.


von Phillip H. (philharmony)


Lesenswert?

Ich möchte bei ungleichheit von zwei Variablen etwas tun.
1
if(! (chan_b == chan_b_old));
2
{ uart_send(chan_b);
3
  chan_b_old = chan_b;
4
  uart_send(chan_b_old); //zur Kontrolle
5
}
Allerdings funktioniert das nicht, er sendet ständig, wobei sie nach 
einmaligem Senden doch wieder gleich sein sollten. Es werden auch zwei 
komplett identische Werte gesendet...
Habe auch schon
1
if(chan_b != chan_b_old)
versucht, ging auch nicht...
Hilfe?

von Thomas R. (tinman) Benutzerseite


Lesenswert?

ist der ; richtig an ende der "if" zeile ?

von Thomas R. (tinman) Benutzerseite


Lesenswert?

zur kontrolle mache ich if else

von Richard S. (rscheff)


Lesenswert?

Absehen von dem gerade beschriebenen Fehler, finde ich !(x == y) nicht 
so ästetisch wie (x != y). Je nach compileroptionen ist letzteres auch 
weniger assembler code (1-3 befehle).

von Phillip H. (philharmony)


Lesenswert?

Hab die selben Zeilen nochmal neu getippt, jetzt gehts!?!? Glaub mein 
Rechner ist müde...
Danke für die Hilfe!

von Karel M. (marsalek)


Lesenswert?

Thomas R. hat es richtig getippt. Das ; am Ende der if-Zeile bedeutet, 
dass die Bedingung sich nur auf ein leeres Befehl bezieht. Danach wird 
der Rest immer durchgeführt.

Karel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.