Das ist überhaupt nicht esoterisch. Du glaubst doch nicht, dass du in deiner Software keine Ganzzahlen hast, die größer als 32737 sind.
Mal davon ab, dass mir bis auf µController noch keine Hardware unterlaufen ist, bei der
ints weniger als 4 Bytes messen, würde mir zumindest nur ein Fall einfallen, in dem ich größere Werte kenne/verwendete: HP von gewissen Gegnern und der Kontostand in RPGs. Habe ich schonmal mehr als 4 Bytes gebraucht? Höchstens in Form von
size_t oder
intptr_t, wo ich aber selten den konkreten Wert wissen musste.
Naja, man könnte ihn schon als long oder int_fast32_t speichern.
Es gibt Menschen, die
int_fastXX_t verwenden? ôO
Dot.Net speichert Zeitspannen als Vielfaches von 100 Nanosekunden.
Das macht dein Alter in Tagen nicht zu einem besseren Beispiel. Man könnte natürlich das Geburtsdatum mit
time_t oder sowas abspeichern, jedoch nur um das aktuelle Alter in Jahren zu errechnen.
(Mir ist noch kein Amt unter die Augen gekommen, das nach dem Alter in Jahres-Bruchteilen zu Buche schlägt.) Und das Alter in Jahren wäre es, was du als
int weiterreichen kannst.
(Mit der Verwendung von signed int kann man im paranoiden Fall sogar sehr portabel Overflows erfassen.) Ein Byte könnte dafür durchaus zu klein geraten, wenn die Wissenschaft wieder tolle Sachen treibt, aber mehr als 2 Bytes, also das Minimum von
int, wirste auch nicht brauchen. 32767 Jahre ist ein Alter, das erstmal deine Software erreichen müsste, und weit unwahrscheinlicher zu erreichen ist als der Y2K-Patzer. Du würdest auch nicht mehr als 2 Bytes für ein Alter brauchen, wenn du die Geburtstage der Sterne unserer umliegenden Galaxien oder verschiedener Dinosaurier verwalten willst. Wenn du Glück hast, kannst du auf 1 000 000 Jahre genau schätzen. Nimm das als 1, und du kannst mit 2 Bytes bis 32 767 000 000 Jahre vor Christus zählen, also weit vor die Entstehung des Universums nach der Urknall-Theorie und weit über die Lebenszeit unseres Sonnensystems hinaus.
Anders gesagt: Das bisher einzige Argument "gegen"
int ist die Falsch-Verwendung als
intptr_t/
size_t-Ersatz, sowie Sonderfälle wie Serialisierung und FFI. Und falls das nicht rauszulesen ist: Das ist kein gutes Gegenargument. Eher ein RTFM-Argument an die Verursacher solcher Patzer.
P.S.:
Zum Beispiel bei meinen Höhendaten, von denen ich vorher sprach war das ein wichtiger Teil für die Entscheidung für den Datentyp und es geht durchaus insgesamt um hunderte von MB, die gespart werden.
... du brauchst Höhendaten bis 2 150Km? Andernfalls scheint es mir, als könntest du locker noch mehr Speicher einsparen. Zumal ein solcher Spezialfall wohl kaum als Argument für den Regelfall herhalten kann.
P.P.S.:
Wenn die Verwendung von int nicht hinterfragt werden darf und das einfach so sein muss, wird es zwecklos.
Ich wurde nicht dafür verwarnt und ausgesperrt,
int32_t als "tut nicht weh" zu verteidigen? Es überwiegen schlicht die besseren Argumente pro
int.