hallo allerseits! hab ein kleines bitshift problem und weiß nicht warum. der compiler bringt die warnung "left shift count >= width of type" bei folgenden Abschnitt - warum? u32 temp_io; . . . if((temp_io & (1<<19)) == 0) lcdPrintChar('_'); else lcdPrintChar(0xFF); vielleicht kann mri jemand helfen - danke im voraus!
danke Tippgeber - jetzt gehts. wieder so eine 16bit falle *ggg schönen abend noch
Das einer mal danke sagt ist ja auch mal nett ;-) Gutes Gelingen weiterhin. Aber, Fallen gibts noch viele.
Der Vollständigkeit halber noch eine kurze Erklärung dazu. > if((temp_io & (1<<19)) == 0) 1 ist vom Typ int, daher ist auch (1<<19) von diesem Typ. Auf Systemen, bei denen int 16 Bit groß ist, wie z.B. AVR bekommt man daher die gezeigte Compilermeldung, denn einen 16-Bit-Wert um 19 Bits zu verschieben ist nicht sinnvoll. Das Ändern in 1L sorgt dafür, daß der Typ long und damit mindestens 32 Bit groß ist.
Ich nehm mal an, das der OP sich das schon so gedacht hat ;-) Aber gut und kurz erklärt.
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.