Bitshift-Problem

Gast #629080
Lesenswert?

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!
Gast #629262
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren