int ist von der Größe her nicht festgelegt (compiler- und Zielplattform-abhängig, manchmal 16bit, manchmal 32bit (z.Zt Raspi 2) und manchmal 64bit), und char ist auf manchen Plattformen signed und auf anderen unsigned.
int32_t ist aber auf allen Plattformen identisch groß und int8_t überall signed.
(Ntl kannst du überall vor jedes char auch ein signed davorschreiben, aber das ist wieder unnötige Schreiberei - die int Länge allerdings ist damit immer noch nicht von identischer Länge -
wir dürfen nicht vergessen:
ich habe einen 32bit Pi 2, aber du hast einen 64bit Pi 3...!
(und wer weiß, ob wir den Code mal auf nem Raspi4 mit Win10-2020 verwenden werden...?)
die limits stehen in <limits.h>
aber auch da bin ich fast schon wieder bei den echten Zahlen 32767 und 65536, auch wegen künftiger Portierbarkeit.
es stellt sich auch die Frage, ob wir lieber Geschwindigkeit wollen oder Speicher sparen:
32767 int16 sind etwas langsamer, aber ein schnellerer 32767er array von int32_t ist schon ein Wort.
Noch interessanter wirds dann bei 65536er arrays von float vs. double ...
naja, wir haben ja 1 GB RAM (hatte mich grade schon verrechnet...)
Lesezeichen