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
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.
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
Sorry, da fehlte eine Klammer! Muss natürlich nach dem Schieben gecastet werden:
1 | tempByte[1] = (uint8_t) (_serial>>24); |
Hättest Du aber auch selber drauf kommen können...;-)
BTW: Wenn Du "_serial" selbst definiert haben solltest: Gewöhne es Dir schnell wieder ab, Bezeichner zu verwenden, die mit Underscores beginnen. Die sind dem System (Compiler, Bibliotheken) vorbehalten.
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.