Forum: Mikrocontroller und Digitale Elektronik Prioritäten bei logischen Operationen ...


von Chris (Gast)


Lesenswert?

Hallo,

kann jemand einem Anfänger helfen und sagen was daran nicht stimmt:

if ((werte[0]>>4)==8||((werte[0]>>4)==9&&werte[2]==0))

Ich möchte lediglich erreichen dass die &&-Operation Vorrang vor der ||
hat ...

von Manni (Gast)


Angehängte Dateien:

Lesenswert?

Sieh dir mal das an.

Manni

von Gerhard Gunzelmann (Gast)


Lesenswert?

if (((werte[0]>>4)==8||((werte[0]>>4)==9) && werte[2]==0))

try this

Gerhard

von Profi (Gast)


Lesenswert?

oder ein paar Cyclen einsparen mit
if (((werte[0]&0xf0)==0x80||((werte[0]&0xf0)==0x90) && werte[2]==0))


oder falls (reine Spekulation meinerseits) es sich um BCD handeln
sollte (upper nibble kann dann nur max 9 sein), reicht es auch, das
Bit7 zu testen:
if ((werte[0]&80) && (werte[2]==0))

vermutlich kannst Du die inneren Klammern weglassen.

@Gerhard: moment mal, gerade sehe ich, die _&&_ soll Vorrang haben,
meint Chris damit, && soll zuerst ausgeführt werden?
if (((werte[0]>>4)==8||((werte[0]>>4)==9) && werte[2]==0))
--->
if ((werte[0]>>4)==8||(((werte[0]>>4)==9) && werte[2]==0))

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.