Hallo, hab ne verständniss frage zu dieser If abfrage(if(LSRwert&0x20)). Der LSRwert, ist wie folgt inizialiseiert: #define LSR MVAR (unsigned char, 0x280005) // Line Status Register . . . LSRwert = LSR; . . . if(LSRwert&0x20) // Ist das 5 bit gesetzt???? { LSRwert =0; putchar('L'); // Kontrollausgabe bla; bla; } mein Prob. ist jetzt das immer als wahr betrachtet wird, auch wenn ich z.B.0x70 o.ä. eingebe. bei LSRwert&0x20, werden doch alle bin.Werte gelöscht, außer bei 1&1 =1 , also übereinstimmung?? danke
if(LSRwert&0x20) ist kein vergelich sondern du verknüpfst LSRwert mit logisch und 0x20
Re wrote: > if(LSRwert&0x20) ist kein vergelich sondern du verknüpfst > LSRwert mit logisch und 0x20 Es ist auch ein impliziter Vergleich vorhanden (nämlich !=0). Außerdem ist es ein binäres Und, kein logisches. Der Ausdruck ist genau dann wahr, wenn in LSRwert das Bit 5 Eins ist.
@Jam, meinst du etwa && statt & ? Dir ist d. Unterschied zwischen den beiden Ausdrücken klar, oder?
Dennis wrote:
> meinst du etwa && statt & ?
Warum sollte er && meinen, das macht doch hier gar keinen Sinn.
richtig ich mein schon & es ist ja ein bin. vergleich ;-). aber trotzdem verstehe ich nicht wieso der vergleich immer wahr ist. Wie stefan bereits erkannt hat wollte ich nur das bit 5 testen. LSR ist 8bit groß, kann ich das eigentlich mit printf, ausgeben lassen??? bis jetzt kam nur blödsin raus. ob mit %d, %s oder %b.
Hi Jam, > Prob. ist jetzt das immer als wahr betrachtet wird, auch wenn ich > z.B.0x70 o.ä. eingebe. Wieso "auch"? 0x70=0b01110000 0b01110000&0x20=0x20 (also wahr) > .. trotzdem verstehe ich nicht wieso der vergleich immer wahr ist. Ist er nicht: Wie schon oben von Stefan gesagt, ist der Vergleich nur dann wahr, wenn Bit5 = 1. Gruß risu
Jam wrote:
> aber trotzdem verstehe ich nicht wieso der vergleich immer wahr ist.
Wenn er bei dir immer wahr ist, dann ist Bit 5 immer 1.
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.