Warnung nach kompilieren

OP #720508
Lesenswert?

Hallo,

Ich bekommen nach dem Kompilieren folgende Warnungen:

"large integer implicitly truncated to unsigned type" bezogen auf 
folgende Code-Zeilen:

   tempByte[3]=_serial>>8;
   tempByte[2]=_serial>>16;
   tempByte[1]=_serial>>24;

tempByte ist eine Array vom Typ uint8_t
_serial ist eine Konstante vom Typ uint32_t

Was sagt diese Warnung aus und wie krieg ich sie los?



Vielen Dank!!

Andy
#720514
Lesenswert?

Die Warnung sagt aus, dass Du einen langen Integer-Wert einer 
8-Bit-Variable zuweist und der Wert dadurch implizit abgeschnitten 
wird. Da das genau das ist, was Du willst, kannst Du die Meldung im 
Prinzip ignorieren. Der Compiler denkt hier nunmal, da Du eben keine 
explizite Typkonversion machst, dass das evtl. nicht so gewollt ist 
und weist Dich netterweise darauf hin. Wenn Du es sauber machen willst 
(und damit der Compiler auch weiß, dass Du weißt, was Du tust und 
dass das ganze beabsichtigt ist), mache vor der Zuweisung eine 
explizite Typkonversion
1
tempByte[1] = (uint8_t) _serial>>24;
Damit sollte die Meldung verschwinden.
OP #720520
Lesenswert?

OK, hab ich gemacht. Nur bekomm ich jetzt folgende Warnungen:

.//Code_ZR_ZED.c:213: warning: integer overflow in expression
.//Code_ZR_ZED.c:214: warning: integer overflow in expression
.//Code_ZR_ZED.c:215: warning: right shift count >= width of type
.//Code_ZR_ZED.c:215: warning: integer overflow in expression
.//Code_ZR_ZED.c:216: warning: right shift count >= width of type
.//Code_ZR_ZED.c:216: warning: integer overflow in expression
.//Code_ZR_ZED.c:223: warning: integer overflow in expression
.//Code_ZR_ZED.c:224: warning: integer overflow in expression
.//Code_ZR_ZED.c:225: warning: right shift count >= width of type
.//Code_ZR_ZED.c:225: warning: integer overflow in expression


:-/


lg
Andy

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