void LED_Anzeige(void)
{
if(Spannung & 0b00000001)
LED_0_an;
else
LED_0_aus;
if(Spannung & 0b00000010)
LED_1_an;
else
LED_1_aus;
if(Spannung & 0b00000100)
LED_2_an;
else
LED_2_aus;
...
}
funktioniert dieses Konstrukt mit dem & , wenn "Spannung" bis zu 8 Bit
groß ist, oder müsste die Verknüpfung durch ein "&&" realisiert werden?
Wann benutzt man "&"
und wann benutzt man "&&" ?
mfg
if((Spannung & 0b00000100)&&(Spannung & 0b00001000)) LED_explode();
C-Buch kaufen. Stehen auch die Antworten auf Deine garantiert nächsten
Fragen drin.
Kurzform: & => bitweises UND
&& => logisches UND
& ist eine Logische, bitweise undverknüpfung && ist eine kombination bei Bedingungen... also 0b00000001 & 0b00001111 -> Ergibt 0b00000001 if(var1 == true && var2 == false) -> prüft ob var1 true UND var2 false ist. oft gemachter fehler mit & und = ist: if(var1 = true) -> springt immer in die If-Klausel, da er erfolgreich var1 true zugewiesen hat...
Ich persönlich falle immer und immer wieder darauf rein:
[c]
/* Gucken ob Pin gesetzt */
if (PINX,pxy) {...}
anstatt
if (PINX & (1<<pxy)) {...}
Knut
ok, das hilft schonmal. Angenommen "Spannung" ist eine 16 Bit Variable. Sind die obigen Ausdrücke dann zulässig, oder müssten dann 0b... mit 16 Nullen und Einsen folgen? mfg
UND-Verknüpfung schrieb: > Sind die obigen Ausdrücke dann zulässig Ja, aber warum eigentlich so umständlich? Knut
ich schrieb: > da er erfolgreich > var1 true zugewiesen hat... Es gibt in C kein 'Zuweisung erfolgreich'. AFAIK gibt
1 | foo=bar; |
bar zurück, ich kann mich aber auch irren.
Ich glaube das geht nur mit 8 bit. Ich würde aber auch sonst 0x01, 0x02, 0x04 nehmen. Bzw dann 0x0001, 0x0002, 0x0004... Ist das so gemeint, dass die 8 bit in "Spannung" angeben, welche LED an gehen soll und welche nicht? Dann würde ich ehrlich gesagt die 8 LEDs an einen Port vom µC machen und dann "PORTx = Spannung;"...... Luk4s K. schrieb: > ich schrieb: >> da er erfolgreich >> var1 true zugewiesen hat... > > Es gibt in C kein 'Zuweisung erfolgreich'. AFAIK gibt Ich meine das mal gelesen zu haben. Jedenfalls springt er bei "if(var = 0)" und auch bei "if(var = 1)" erfolgreich in den IF... selbst (unfreiwillig) getestet^^
ich schrieb: > Ich meine das mal gelesen zu haben. Das ist auf jeden Fall falsch. Hier irgendwo im Forum gibt es einen Beitrag dazu.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.