Klammernregel

Hallo zusammen,
arbeite mal wieder an einem Sketch und stehe nun vor folgendem Problem:
Ich habe vier Signale A,B,C,D. Es soll etwas passieren wenn A&B HIGH ist oder wenn C&D HIGH ist.
Kann ich diese Syntax verwenden:

if((A&&B)||(C&&D)){
}

danke für eure Rückmeldung

ich würde schreiben:

if (((A==HIGH)&&(B==HIGH)) || ((C==HIGH)&&(D==HIGH))){
}

Ja, klar hast natürlich recht. Es ging mir eher ums Prinzip.

if((A==B)||(C==D)

So gehts eigendlich auch spat Tiparbeit

Thorsten4171:
if((A==B)||(C==D)

So gehts eigendlich auch spat Tiparbeit

Nö.

A = LOW, B = LOW führt ebenso wie C = LOW, D = LOW zum falschen Ergebnis.

@ Whandall
Top, der man denkt mit!

Wenn A, B, C und D ausschließlich von digitalRead() gesetzt werden, könnte man schreibfaul

if ((A & B) || (C & D)) {

}

verwenden.

Wegen der Operator Precedence könnte man auch auf die inneren Klammern verzichten,
aber das ist für meinen Geschmack weniger gut zu lesen.

if (A & B || C & D) {

}

Oder noch verwirrender

if (A & B | C & D) {

}

Johannes81:
Hallo zusammen,
arbeite mal wieder an einem Sketch und stehe nun vor folgendem Problem:
Ich habe vier Signale A,B,C,D. Es soll etwas passieren wenn A&B HIGH ist oder wenn C&D HIGH ist.
Kann ich diese Syntax verwenden:

if((A&&B)||(C&&D)){
}

danke für eure Rückmeldung

Ich kenne den Datentype "Signal" nicht.
Und mein Arduino auch nicht.

Signal A = 4711;

exit status 1
'Signal' does not name a type

Ansonsten, wenn deine Signale vom Type "bool" sind, dann ist:

if((A&&B)||(C&&D)){
}

Doch total korrekt.
So würde ich es auch machen....
Wo ist dein Problem damit?

if (((A==HIGH)&&(B==HIGH)) || ((C==HIGH)&&(D==HIGH))){

}

Das ist aus meiner Sicht völlig überzogen.
Aber dennoch: Genauso korrekt.

@Whandall

Hab nicht richtig gelesen da es um High un Low geht.
Wenn ich x beliebiege Wert für A-D nehme müsste es doch gehen?

Wenn "es" if((A==B)||(C==D)ist, gilt genauso:

gleiche Werte (ungleich HIGH) von A und B oder C und D führen zum falschen Ergebnis.

@Whandall

z.B A=5 B=5 C=7 D=9 führen doch zur Erfühlung der Bedingung?

Selbst wenn wir die Werte logisch betrachten, es bleibt der falsche Fall A=0 B=0.

@Whandall
muß mir jetzt erstmal einen Kaffe machen und abschalten habe im Moment einen Knoten im Hirn

@Whandall

Habe nochmal probiert. Meine Variante taugt natürlich nicht um einen z.B Taster abzufragen .
Aber was ich sagen wollte es ist doch so wie ich geschrieben habe richtig wenn A und B den gleichen Wert habe oder C und D den gleichen Wert ist die Bedingung erfühlt. Zum Abfragen eines z.B Taster natürlich nicht da HIGH und HIGH genauso wahr wie LOW und LOW.Liege ich so richtig?

Thorsten4171:
Aber was ich sagen wollte es ist doch so wie ich geschrieben habe richtig wenn A und B den gleichen Wert habe oder C und D den gleichen Wert ist die Bedingung erfühlt.

Ja schon, das ist halt nur eine Antwort auf eine andere Frage...

@Whandall

Danke habe schon an mir gezweifelt. Das ich nicht richtig gelesen habe schrieb ich in #8
Tschuldigung wenn das falsch rübergekommen ist. Habe aber wieder was gelernt ,erst richtig lesen und dann Gehirn einschalten und antworten.

mfG
Thorsten

Thorsten4171:
... erst richtig lesen und dann Gehirn einschalten und antworten.

Tausche das mit dem Hirn und dem Lesen (hirnloses Lesen bringt bei mir überhaupt nichts) - und zum Antworten nimmst Du noch den Nachbrenner dazu :slight_smile:

Gruß

Gregor