so etwas ähnliches hatten wir letzte Tage schon einmal - ich findes es hier blos nicht auf die Schnelle. Es ist bei logischen Verknüpfungen ("Boolsche Algebra") genau so wie normaler Mathematik: Punktrechnung vor Strichrechnung. Ebenso gibt es hier eine Hierachie bei den boolschen Vergleichen.
In deiner Abfrage wird erst X AND Y verglichen ... und DANN das Ergebnis mit ODER verbunden. Pack also die gesamte ODER-Struktur noch in zusätzliche Klammern und dann müsste es gehen.
Also ... AA && ( BB || CC || DD )
So in der Art
Rudi
EDIT:
Jessas - HotSystems war mal wieder schneller...
Eigentlich schon. Verzwickt ist es immer wenn in gemischter Logik gedacht wird. Auf der einen Hälfte positive Logik, in der anderen Hälfte negative. Hier verhaspelt man sich leicht, zumal X==0 ja schon wieder TRUE ergibt. Man müsste dann m.E. den 1. Ausdruck negieren (wie auch immer ich das beschreiben soll).
Oder ganz einfach (für Leute wie mich) eine Wahrheitstabelle malen wie damals bei den 7400-Chips. Das geht dann sauber raus und wirkt sofort einleuchtend (für MICH...)
Serenifly:
Da gilt aber genau wie beim Distributivgesetz bei Grundrechenarten, dass man Sensor[5]3 ausklammern kann:
Rein von der boolschen Logik her sollte der ursprüngliche Code eigentlich gehen
Ja das sehe ich auch so.
Allerdings habe ich vor längerer Zeit mal an einer ähnlichen Problematik gehangen und es nur über den umständlichen Weg gelöst. Daher hier mein Post.
Bist du sicher dass die Variablen und dabei vor allem die Indizes korrekt verwendet werden?
Wenn du verschiedenen Indizes übrigens eine bestimmte Bedeutung haben, dann sollte man daher eher ein struct statt ein Array nehmen. Dann hat man aussagekräftige Namen.
Was haltet ihr denn davon?
if (!Sensor5[3] && (Sensor4[3] + Sensor4[4] + Sensor4[5]))
Ich halte nichts davon, Variable zu verwenden die nicht definiert sind.
Warum verwendest du Arrays ?
Man kann mehrere bool mit + zu einem int vermuscheln und die Summe per && auf != 0 abfragen.
Warum nimmst du nicht*statt&&?
Das würde das ganze noch trickreicher aussehen lassen ...
Ich nutze arrays, weil ich die Daten via nrf24 als arrays verschicke.... die Zuordnung paßt- ich lasse mir die nebenbei auf ein einem Display anzeigen und sehe auch da den Status der Sensoren.... Sollte/könnte ich statt 1 und 0 HIGH und LOW schreiben? macht das einen Unterschied?
Moin,
gemäß Fragestellung am Anfang des Beitrages habe ich heute morgen beim Frühstück folgende Zeichnung gepinselt:
Die im Verlauf der Unterhaltung gezeigten Verknüpfungen und auch besonders nach Aussage von Serenifly müssten demnach funktionieren. Wenn aber dennoch das falsche Ergebnis geliefert wird (was der letzte Post quasi beinhaltet) ist die Fragestellung nach meiner Sichtweise falsch.
(Sorry für meine altmodischen Symbole, mit den eckigen Blöcken gemäß DIN komme ich nicht wirklich klar)
Ich gehe davon aus, dass es geht, und du nur um eine Meinung gefragt hast, ob + oder | besser ist.
Dass | oder || eine C-Schreibweise für Rudis V Operator ist, sollte eigentlich klar sein.
Dass + auch gehen kann, sollte auch klar sein, aber was der Vorteil sin soll, ist mir nicht klar.
ich sehe auf dem Display die 4 PIR Zustände und den Ausgabewert. Wenn nur einer der PIRs high ist, der high sein soll, scheint die Bedingung nicht erfüllt zu sein... ich werde das ganze noch mal anders nachstellen/prüfen... nicht dass das Display nur zu träge ist...