> Das Ergebnis des '~'-Operators ist ein int, im konkreten Fall nämlich
> 1111111111110111. Durch die Zuweisung an ein unit8_t wird daraus
> 11110111.
>
> Das Ergebnis von "1 << PC3" (also ohne '~') ist zwar auch ein int, aber
> hier sind die oberen 8 Bits Nullen.
Okay, das leuchtet ein.
Aber arbeitet der gcc bei 8-Bit Controllern nicht standardmäßg mit char?
Habe noch etwas gefunden:
und das hier:
1 | unsigned char check = 0;
|
2 | unsigned char data = 0;
|
3 |
|
4 | for ( unsigned int adress = 0; adress < FLASHEND; adress++)
|
5 | {
|
6 | data = pgm_read_byte_near (adress);
|
7 | check += data;
|
8 | }
|
hier kommt die Meldung bei "check += data".
Erkennt der Compiler auf einen möglichen Überlauf?