hallo das folgende problem wurmt mich eigentlich shcons eit dem ich mit dem avr-gcc programmiere. dieser code (ist einigermaßen sinnfrei, da nur ein beispiel): int main(void) { char c, i; char array[8]; for(i=0; i<8; i++) array[i] = i; for(i=0; i<8; i++) c = array[i]; while(1); return 0; } gibt beim compilieren folgende warnings: Compiling: blub.c avr-gcc -c -mmcu=atmega128 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=blub.lst -std=gnu99 blub.c -o blub.o blub.c: In function `main': blub.c:6: warning: array subscript has type `char' blub.c:9: warning: array subscript has type `char' warum? also ok es sind nur warnings und es funktioniert auch so wies soll es stört mich aber trotzdem :)
Weil der Standard halt vorschreibt, daß es ein `int' ist. Kommt dazu, daß `char' by default `signed char' ist, d. h. wenn Dein Index größer als 127 wird, hast Du eine negative Zahl...
Ich würde i als uint8_t deklarieren. Mit pointers gibts allerdings kompakteren Code: char c, *p; uint8_t i; char array[8]; p = array; for(i=0; i<8; i++) *p++ = i;
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.